Add sound-control.sh
This commit is contained in:
parent
416c07e329
commit
01eeaa5417
96
sound-control.sh
Executable file
96
sound-control.sh
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
setopt rcquotes
|
||||||
|
|
||||||
|
function print_help {
|
||||||
|
echo "usage: sound-control.sh [-n] [-h] <command>"
|
||||||
|
echo 'Options:'
|
||||||
|
echo ' -h: print this message, then exit'
|
||||||
|
echo ' -n: don''t notify the volume'
|
||||||
|
echo 'Commands:'
|
||||||
|
echo ' up: increase the volume (default: 5%)'
|
||||||
|
echo ' down: decrease the volume (default: 5%)'
|
||||||
|
echo ' set: set the volume'
|
||||||
|
echo ' mute: toggle the mute with no argument, or set it with one'
|
||||||
|
echo ' help: print this message, then exit'
|
||||||
|
echo ' notify: notify the volume, then exit (do nothing with -n)'
|
||||||
|
}
|
||||||
|
|
||||||
|
let notify=1
|
||||||
|
|
||||||
|
function notify_vol {
|
||||||
|
let vol="$(pamixer --get-volume)"
|
||||||
|
local icon
|
||||||
|
if [[ "$(pamixer --get-mute)" == 'true' ]]; then
|
||||||
|
icon=''
|
||||||
|
elif (( ${vol} > 50 )); then
|
||||||
|
icon=''
|
||||||
|
elif (( ${vol} >= 0 )); then
|
||||||
|
icon=''
|
||||||
|
else
|
||||||
|
icon='?'
|
||||||
|
fi
|
||||||
|
notify-send -h string:x-canonical-private-synchronous:sound-control-sh \
|
||||||
|
-t 4000 \
|
||||||
|
-u normal \
|
||||||
|
-a "Volume" \
|
||||||
|
-h int:value:"${vol}" \
|
||||||
|
"${icon}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_number {
|
||||||
|
if ! [[ -z "${1}" ]] && ! [[ "${1}" =~ '^-?[0-9]+%?$' ]]; then
|
||||||
|
echo "error: not a valid number: \"${1}\""
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "${1}" == '-n' ]]; then
|
||||||
|
shift 1
|
||||||
|
notify=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${1}" in
|
||||||
|
-h|help|'')
|
||||||
|
print_help
|
||||||
|
;;
|
||||||
|
up)
|
||||||
|
check_number "${2}"
|
||||||
|
pamixer -i "${${2:-5}%'%'}"
|
||||||
|
notify_vol
|
||||||
|
;;
|
||||||
|
down)
|
||||||
|
check_number "${2}"
|
||||||
|
pamixer -d "${${2:-5}%'%'}"
|
||||||
|
notify_vol
|
||||||
|
;;
|
||||||
|
set)
|
||||||
|
(( ${#} >= 2 )) || { echo 'error: no input value'; exit 1 }
|
||||||
|
check_number "${2}"
|
||||||
|
pamixer --set-volume "${2%'%'}"
|
||||||
|
notify_vol
|
||||||
|
;;
|
||||||
|
mute)
|
||||||
|
if (( ${#} >= 2 )); then
|
||||||
|
if [[ "${2:l}" =~ '^y(es?)?$' ]]; then
|
||||||
|
pamixer -m
|
||||||
|
elif [[ "${2:l}" =~ '^no?$' ]]; then
|
||||||
|
pamixer -u
|
||||||
|
else
|
||||||
|
echo "error: must be one of 'yes' or 'no': \"${2}\""
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
pamixer -t
|
||||||
|
fi
|
||||||
|
notify_vol
|
||||||
|
;;
|
||||||
|
notify)
|
||||||
|
notify_vol
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "error: unknown command: \"${1}\""
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user