|
|
|
#!/usr/bin/env sh
|
|
|
|
|
|
|
|
# A simple script to adjust the volume
|
|
|
|
# Requires pulse and amixer
|
|
|
|
|
|
|
|
|
|
|
|
function drawBar(){
|
|
|
|
local percent="$1";
|
|
|
|
|
|
|
|
for i in {1..10}; do
|
|
|
|
local boxPercent=$(($i*10))
|
|
|
|
if [ "$boxPercent" -lt "$percent" ]; then
|
|
|
|
echo -n "■"
|
|
|
|
elif [ "$boxPercent" -eq "$percent" ]; then
|
|
|
|
echo -n "■"
|
|
|
|
elif [ "$(($boxPercent-10))" -lt "$percent" ]; then
|
|
|
|
echo -n "▣"
|
|
|
|
else
|
|
|
|
echo -n "□"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
"up")
|
|
|
|
if type -p pulseaudio-ctl 2> /dev/null; then
|
|
|
|
pulseaudio-ctl up
|
|
|
|
else
|
|
|
|
amixer -q -D default sset Master 5%+ unmute
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
"down")
|
|
|
|
if type -p pulseaudio-ctl 2> /dev/null; then
|
|
|
|
pulseaudio-ctl down
|
|
|
|
else
|
|
|
|
amixer -q -D default sset Master 5%- unmute
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
"toggle")
|
|
|
|
if type -p pulseaudio-ctl 2> /dev/null; then
|
|
|
|
pulseaudio-ctl mute
|
|
|
|
else
|
|
|
|
amixer -q -D default sset Master toggle
|
|
|
|
fi
|
|
|
|
esac
|
|
|
|
|
|
|
|
if type -p pulseaudio-ctl 2> /dev/null; then
|
|
|
|
volume="$(pulseaudio-ctl full-status | cut -d ' ' -f1)"
|
|
|
|
speakerStatus="$(pulseaudio-ctl full-status | cut -d ' ' -f2 | sed 's/no/on/g')"
|
|
|
|
else
|
|
|
|
volume="$(amixer -D default sget Master | grep -o '\[.*\%' | head -n 1 | tr -d '[%')"
|
|
|
|
speakerStatus="$(amixer -D default sget Master | grep -o '\[\(on\|off\)' | head -n 1 | tr -d '[')"
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [[ "$speakerStatus" == "on" ]]; then
|
|
|
|
command -v notify-send && notify-send -R "/tmp/volume" "Volume" "$(drawBar $volume) ${volume}%"
|
|
|
|
else
|
|
|
|
command -v notify-send && notify-send -R "/tmp/volume" "Volume" "Muted"
|
|
|
|
fi
|