#!/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