users/ryan/modules/sketchybar/bar-config/plugins/volume.sh

7108fc28e06a6326f7a04251cc95bbe50ced6133 · 1.1 KB · 36 lines raw

1 #!/usr/bin/env bash
2 source "$CONFIG_DIR/colors.sh"
3 source "$CONFIG_DIR/icons.sh"
4
5 STEP=5 # % per scroll tick (Waybar used scroll-step: 1 — bump this down to taste)
6
7 if [ "$SENDER" = "mouse.scrolled" ]; then
8 CUR="$(osascript -e 'output volume of (get volume settings)')"
9 case "$SCROLL_DELTA" in
10 -*) VOL=$(( CUR - STEP )) ;; # scroll down
11 *) VOL=$(( CUR + STEP )) ;; # scroll up
12 esac
13 [ "$VOL" -lt 0 ] && VOL=0
14 [ "$VOL" -gt 100 ] && VOL=100
15 osascript -e "set volume output volume $VOL"
16 elif [ "$SENDER" = "volume_change" ]; then
17 VOL="$INFO"
18 else
19 VOL="$(osascript -e 'output volume of (get volume settings)')"
20 fi
21
22 MUTED="$(osascript -e 'output muted of (get volume settings)')"
23
24 if [ "$MUTED" = "true" ] || { [ "$VOL" -eq 0 ] 2>/dev/null; }; then
25 sketchybar --set "$NAME" label="$VOL_MUTE" # format-muted
26 exit 0
27 fi
28
29 if [ "$VOL" -ge 66 ]; then ICON=$VOL_3
30 elif [ "$VOL" -ge 33 ]; then ICON=$VOL_2
31 elif [ "$VOL" -ge 1 ]; then ICON=$VOL_1
32 else ICON=$VOL_0
33 fi
34
35 # Waybar: {volume} {icon}
36 sketchybar --set "$NAME" label="$VOL $ICON"