#!/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." >&2 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