You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
#!/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
|
|
|