You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.3 KiB
Bash

#!/usr/bin/env clopper-ob-bash
##
# Sound controlls
set -eo pipefail
master-percentage() {
amixer -D pulse get Master | grep -Pom 1 '(?<=\[)[0-9]+(?=%\])'
}
master-status() {
amixer -D pulse get Master | grep -Pom 1 '(?<=\[)(on|off)(?=\]$)'
}
master-is-on() {
[[ $(master-status) == 'on' ]]
}
increase-master() {
declare master_percentage=''
master_percentage="$(master-percentage)"
[[ $master_percentage -le 100 ]] || return 1
amixer -D pulse set Master $((master_percentage + 8))'%'
}
decrease-master() {
declare master_percentage=''
master_percentage="$(master-percentage)"
[[ $master_percentage -ge 0 ]] || return 1
amixer -D pulse set Master $((master_percentage - 8))'%'
}
disable-master() {
amixer -D pulse set Master off
}
enable-master() {
amixer -D pulse set Master on
}
notify-volume() {
notify-send.sh -i "$(icon sound-up)" \
--replace-file="$HOME/.cache/clopper-ob/sound.id" \
" $(bar $(($(master-percentage)/4)))"
play-sound volume-change
}
case "$1" in
+)
increase-master
notify-volume
;;
-)
decrease-master
notify-volume
;;
toggle)
if master-is-on; then
disable-master
notify-send.sh -i "$(icon sound-off)" 'Muted' \
--replace-file="$HOME/.cache/clopper-ob/sound.id"
else
enable-master
notify-volume
fi
;;
esac