nix-config/pkgs/change-audio/change-audio
Bruno BELANYI 119504d0b5 pkgs: change-audio: 0.1.2 -> 0.2.0
Allow muting microphone and speakers, with refactor to make it DRY.
2021-11-12 10:17:42 +01:00

63 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
NOTIFY=(
notify-send
-u low
-h string:x-canonical-private-synchronous:change-audio
)
do_change_volume() {
if [ "$1" = "up" ]; then
upDown="-i"
else
upDown="-d"
fi
pamixer --allow-boost "$upDown" "$2"
newVolume="$(pamixer --get-volume || true)"
[ "$(pamixer --get-volume-human)" = "muted" ] && isMuted=true
MSG="Set volume to $newVolume%"
if [ "${isMuted:-false}" = true ]; then
MSG="$MSG (muted)"
fi
"${NOTIFY[@]}" \
-h "int:value:$newVolume" \
-- "$MSG"
}
do_toggle() {
args=()
if [ "${2:-audio}" = mic ]; then
args+=(--default-source)
MSG="Toggled microphone"
else
MSG="Toggled audio output"
fi
pamixer "${args[@]}" --toggle-mute
if [ "$(pamixer "${args[@]}" --get-mute)" = true ]; then
MSG="$MSG (muted)"
else
MSG="$MSG (unmuted)"
fi
"${NOTIFY[@]}" -- "$MSG"
}
case "$1" in
up|down)
do_change_volume "$@"
;;
toggle)
do_toggle "$@"
;;
*)
echo "No suche option '$1'" >&2
exit 1
;;
esac