aboutsummaryrefslogtreecommitdiff
path: root/users/ryan/modules/sketchybar/bar-config/plugins/battery.sh
diff options
context:
space:
mode:
Diffstat (limited to 'users/ryan/modules/sketchybar/bar-config/plugins/battery.sh')
-rwxr-xr-xusers/ryan/modules/sketchybar/bar-config/plugins/battery.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/users/ryan/modules/sketchybar/bar-config/plugins/battery.sh b/users/ryan/modules/sketchybar/bar-config/plugins/battery.sh
new file mode 100755
index 0000000..3d01d63
--- /dev/null
+++ b/users/ryan/modules/sketchybar/bar-config/plugins/battery.sh
@@ -0,0 +1,42 @@
1#!/usr/bin/env bash
2source "$CONFIG_DIR/colors.sh"
3source "$CONFIG_DIR/icons.sh"
4
5CACHE="/tmp/sketchybar_${NAME}.txt"
6case "$SENDER" in
7 mouse.entered)
8 [ -f "$CACHE" ] && sketchybar --set "$NAME.details" label="$(cat "$CACHE")"
9 sketchybar --set "$NAME" popup.drawing=on; exit 0 ;;
10 mouse.exited)
11 sketchybar --set "$NAME" popup.drawing=off; exit 0 ;;
12esac
13
14RAW="$(pmset -g batt)"
15PCT="$(printf '%s' "$RAW" | grep -Eo '[0-9]+%' | head -1 | tr -d '%')"
16CHARGING="$(printf '%s' "$RAW" | grep -c 'AC Power')"
17[ -z "$PCT" ] && exit 0
18
19if [ "$PCT" -ge 80 ]; then ICON=$BAT_4
20elif [ "$PCT" -ge 60 ]; then ICON=$BAT_3
21elif [ "$PCT" -ge 40 ]; then ICON=$BAT_2
22elif [ "$PCT" -ge 20 ]; then ICON=$BAT_1
23else ICON=$BAT_0
24fi
25
26COLOR=$TEXT
27if [ "$CHARGING" -ge 1 ]; then ICON=$BAT_CHARGING; COLOR=$TEXT
28elif [ "$PCT" -le 10 ]; then COLOR=$RED
29elif [ "$PCT" -le 25 ]; then COLOR=$YELLOW
30fi
31
32sketchybar --set "$NAME" label="${PCT}% ${ICON}" label.color=$COLOR
33
34# popup: state + time remaining (Waybar battery format-alt "{time}")
35STATE="$(printf '%s' "$RAW" | grep -Eo 'discharging|charging|charged|AC attached|finishing charge' | head -1)"
36TIME="$(printf '%s' "$RAW" | grep -Eo '[0-9]+:[0-9]+' | head -1)"
37LINE="${PCT}%"
38[ -n "$STATE" ] && LINE="$LINE · $STATE"
39if [ -n "$TIME" ] && [ "$TIME" != "0:00" ]; then
40 if [ "$CHARGING" -ge 1 ]; then LINE="$LINE · $TIME to full"; else LINE="$LINE · $TIME remaining"; fi
41fi
42printf '%s' "$LINE" > "$CACHE"