aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
authorJustine Smithies <justine@smithies.me.uk>2024-12-16 19:07:11 +0000
committerJustine Smithies <justine@smithies.me.uk>2024-12-16 19:07:11 +0000
commitc31e320af102a0f43e30807459c372952677ed64 (patch)
treebeb513a276222742c94d87ec64975baf6663127d /.config
parent04f48992016c4f2b03ff1983733937f64970f7f2 (diff)
Renamed volumecontrol to volumecontrol.sh and converted from bash to sh.
Diffstat (limited to '.config')
-rwxr-xr-x.config/eww/scripts/volumecontrol.sh124
1 files changed, 124 insertions, 0 deletions
diff --git a/.config/eww/scripts/volumecontrol.sh b/.config/eww/scripts/volumecontrol.sh
new file mode 100755
index 0000000..9534e43
--- /dev/null
+++ b/.config/eww/scripts/volumecontrol.sh
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+# You can call this script like this:
+# volumecontrol up
+# volumecontrol down
+# volumecontrol mute
+
+get_volume() {
+ # pactl get-sink-volume @DEFAULT_SINK@ | grep '%' | cut -d '%' -f 1 | cut -d ' ' -f 6
+ echo "scale=1; $(mixer vol | grep 'vol.volume=' | cut -d '=' -f 2 | cut -d ':' -f 1)*100" | bc | cut -d '.' -f 1
+}
+
+is_mute() {
+ # pactl get-sink-mute @DEFAULT_SINK@ | grep 'Mute: yes' >> /dev/null
+ mixer vol | grep 'vol.mute=on' >> /dev/null
+}
+
+send_notification() {
+ volume=$(get_volume)
+ # Make the bar with the special character ─ (it's not dash -)
+ # https://en.wikipedia.org/wiki/Box-drawing_character
+ if [ "$volume" = "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "89" ] && [ "$volume" -le "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "79" ] && [ "$volume" -le "90" ]; then
+ icon=""
+ elif [ "$volume" -ge "69" ] && [ "$volume" -le "80" ]; then
+ icon=""
+ elif [ "$volume" -ge "59" ] && [ "$volume" -le "70" ]; then
+ icon=""
+ elif [ "$volume" -ge "49" ] && [ "$volume" -le "60" ]; then
+ icon=""
+ elif [ "$volume" -ge "39" ] && [ "$volume" -le "50" ]; then
+ icon=""
+ elif [ "$volume" -ge "29" ] && [ "$volume" -le "40" ]; then
+ icon=""
+ elif [ "$volume" -ge "19" ] && [ "$volume" -le "30" ]; then
+ icon=""
+ elif [ "$volume" -ge "9" ] && [ "$volume" -le "20" ]; then
+ icon=""
+ elif [ "$volume" -gt "0" ] && [ "$volume" -le "10" ]; then
+ icon=""
+ elif [ "$volume" -eq "0" ]; then
+ icon=""
+ # volume="M "
+ fi
+bar=$(seq -s "─" $(($volume/5)) | sed 's/[0-9]//g')
+# Send the notification
+fyi --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon $bar $volume"
+}
+
+case $1 in
+ up)
+ # pactl set-sink-mute @DEFAULT_SINK@ 0
+ mixer vol.mute=off
+ # Up the volume (+ 2%)
+ # pactl set-sink-volume @DEFAULT_SINK@ +2%
+ mixer vol.volume=+2%
+ mixer vol > ~/.cache/audio-volume
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ ;;
+ down)
+ # pactl set-sink-mute @DEFAULT_SINK@ 0
+ mixer vol.mute=off
+ # pactl set-sink-volume @DEFAULT_SINK@ -2%
+ mixer vol.volume=-2%
+ mixer vol > ~/.cache/audio-volume
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ ;;
+ mute)
+ # Toggle mute
+ # pactl set-sink-mute @DEFAULT_SINK@ toggle
+ mixer vol.mute=toggle
+ mixer vol > ~/.cache/audio-volume
+ if is_mute ; then
+ icon="󰝟"
+ fyi --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon Audio Muted"
+ else
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ fi
+ ;;
+ *)
+ volume="$(get_volume)"
+
+ if [ "$volume" = "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "89" ] && [ "$volume" -le "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "79" ] && [ "$volume" -le "90" ]; then
+ icon=""
+ elif [ "$volume" -ge "69" ] && [ "$volume" -le "80" ]; then
+ icon=""
+ elif [ "$volume" -ge "59" ] && [ "$volume" -le "70" ]; then
+ icon=""
+ elif [ "$volume" -ge "49" ] && [ "$volume" -le "60" ]; then
+ icon=""
+ elif [ "$volume" -ge "39" ] && [ "$volume" -le "50" ]; then
+ icon=""
+ elif [ "$volume" -ge "29" ] && [ "$volume" -le "40" ]; then
+ icon=""
+ elif [ "$volume" -ge "19" ] && [ "$volume" -le "30" ]; then
+ icon=""
+ elif [ "$volume" -ge "9" ] && [ "$volume" -le "20" ]; then
+ icon=""
+ elif [ "$volume" -gt "0" ] && [ "$volume" -le "10" ]; then
+ icon=""
+ elif [ "$volume" -eq "0" ]; then
+ icon="󰝟"
+ volume="M "
+ fi
+
+
+if is_mute; then
+ icon="󰝟"
+ volume="M "
+fi
+
+printf "%s" "$icon $volume%"
+ ;;
+esac