1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/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 {
- ((${notify})) || return
- 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} ${vol}%"
- }
- function check_number {
- if ! [[ -z "${1}" ]] && ! [[ "${1}" =~ '^[0-9]+%?$' ]]; then
- echo "error: not a valid value: \"${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
|