aboutsummaryrefslogtreecommitdiff
path: root/users/ryan/modules/sketchybar/bar-config/plugins/volume.sh
blob: 667d0e870c508d1f9a47bce87beb61516f370100 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env bash
source "$CONFIG_DIR/colors.sh"
source "$CONFIG_DIR/icons.sh"

STEP=5   # % per scroll tick (Waybar used scroll-step: 1 — bump this down to taste)

if [ "$SENDER" = "mouse.scrolled" ]; then
  CUR="$(osascript -e 'output volume of (get volume settings)')"
  case "$SCROLL_DELTA" in
    -*) VOL=$(( CUR - STEP )) ;;   # scroll down
    *)  VOL=$(( CUR + STEP )) ;;   # scroll up
  esac
  [ "$VOL" -lt 0 ]   && VOL=0
  [ "$VOL" -gt 100 ] && VOL=100
  osascript -e "set volume output volume $VOL"
elif [ "$SENDER" = "volume_change" ]; then
  VOL="$INFO"
else
  VOL="$(osascript -e 'output volume of (get volume settings)')"
fi

MUTED="$(osascript -e 'output muted of (get volume settings)')"

if [ "$MUTED" = "true" ] || { [ "$VOL" -eq 0 ] 2>/dev/null; }; then
  sketchybar --set "$NAME" label="$VOL_MUTE"       # format-muted
  exit 0
fi

if   [ "$VOL" -ge 66 ]; then ICON=$VOL_3
elif [ "$VOL" -ge 33 ]; then ICON=$VOL_2
elif [ "$VOL" -ge 1  ]; then ICON=$VOL_1
else                         ICON=$VOL_0
fi

# Waybar: {volume} {icon}
sketchybar --set "$NAME" label="$VOL $ICON"