summaryrefslogtreecommitdiff
path: root/mac/.config/sketchybar/plugins/volume_click.sh
blob: 82badb8c517b50bc6464894e6e59723f3d4bc7b1 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env bash

# Source colors for consistent theming
source "$CONFIG_DIR/colors.sh"

# Toggle popup
sketchybar --set volume popup.drawing=toggle

# Get current volume and mute status
VOLUME=$(osascript -e "output volume of (get volume settings)" 2>/dev/null || echo "50")
MUTED=$(osascript -e "output muted of (get volume settings)" 2>/dev/null || echo "false")

# Add mute toggle
if [ "$MUTED" = "true" ]; then
    MUTE_ICON="󰖁"
    MUTE_COLOR=$RED
else
    MUTE_ICON="󰕾"
    MUTE_COLOR=$GREEN
fi

sketchybar --add item volume.mute popup.volume \
           --set volume.mute icon="$MUTE_ICON" \
                           icon.color="$MUTE_COLOR" \
                           label.drawing=off \
                           background.drawing=off \
                           padding_left=8 \
                           padding_right=2 \
                           click_script="osascript -e 'set volume output muted not (output muted of (get volume settings))'"

# Add volume down button
sketchybar --add item volume.down popup.volume \
           --set volume.down icon="−" \
                           icon.color=$WHITE \
                           icon.font="SF Pro:Medium:14.0" \
                           label.drawing=off \
                           background.drawing=off \
                           padding_left=2 \
                           padding_right=2 \
                           click_script="osascript -e 'set volume output volume ((output volume of (get volume settings)) - 5)'"

# Create compact slider bar with 50 segments
SLIDER_BAR=""
FILLED_SEGMENTS=$((VOLUME / 2))

for i in {1..50}; do
    if [ $i -le $FILLED_SEGMENTS ]; then
        SLIDER_BAR="${SLIDER_BAR}█"
    else
        SLIDER_BAR="${SLIDER_BAR}▒"
    fi
done

sketchybar --add item volume.slider popup.volume \
           --set volume.slider icon="$SLIDER_BAR" \
                              icon.color=$ACCENT_PRIMARY \
                              icon.font="SF Pro:Regular:2.0" \
                              label.drawing=off \
                              background.drawing=off \
                              padding_left=2 \
                              padding_right=2 \
                              click_script="osascript -e 'set volume output volume 50'"

# Add volume up button
sketchybar --add item volume.up popup.volume \
           --set volume.up icon="+" \
                         icon.color=$WHITE \
                         icon.font="SF Pro:Medium:14.0" \
                         label.drawing=off \
                         background.drawing=off \
                         padding_left=2 \
                         padding_right=2 \
                         click_script="osascript -e 'set volume output volume ((output volume of (get volume settings)) + 5)'"

# Add volume percentage
sketchybar --add item volume.percent popup.volume \
           --set volume.percent icon="$VOLUME%" \
                               icon.color=$WHITE \
                               icon.font="SF Pro:Medium:9.0" \
                               label.drawing=off \
                               background.drawing=off \
                               padding_left=2