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
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
|