diff --git a/st b/st new file mode 100755 index 0000000..f449675 --- /dev/null +++ b/st @@ -0,0 +1,51 @@ +#!/usr/bin/env sh + +delay=$1 +usage='Usage: st [delay_in_milliseconds]\n\nThis utility will toggle sidetone for your primary audio input device.\nDelay argument is optional -- default: 1\n' +# Sanity check +### Set delay to 1 if unspecified +if [ $# -eq 0 ]; then + delay=1 +fi + +### Check if pavucontrol is available +if (! type pactl &>/dev/null); then + printf "ERROR 12: 'pactl' command not found!\n\n This command is part of PulseAudio Volume Control, which may commonly be found in your distribution's repository as 'pavucontrol'.\n Please install and try again." + exit 12 +fi + +### Check if delay value >1 +if [ $delay -lt 1 ]; then + echo "ERROR 13: Delay can not be less than 1!" >&2 + printf "\n$usage" + exit 13 +fi + +### Check if delay value is an integer (no extra characters) +case $delay in + ''|*[!0-9]*) + echo "ERROR 14: Delay value must be an unsigned integer!" >&2 ; + printf "\n$usage" ; + exit 14 ;; +esac +# End sanity check + + +if (pactl list | grep module-loopback) 2>&1 >/dev/null; then + pactl unload-module module-loopback + echo "Sidetone: OFF" + exit 0 +else + pactl load-module module-loopback latency_msec=${delay} >/dev/null || exit 1 + if [ $delay -gt 1 ]; then + printf "Sidetone: ON\tDelay: ${delay}ms\n" + else + echo "Sidetone: ON" + fi + exit 0 +fi + + +echo "ERROR 3: We don't know WTF happened!" >&2 +exit 3 +