diff options
Diffstat (limited to 'users/ryan/modules/sketchybar/bar-config/plugins/battery.sh')
| -rwxr-xr-x | users/ryan/modules/sketchybar/bar-config/plugins/battery.sh | 42 |
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 | ||
| 2 | source "$CONFIG_DIR/colors.sh" | ||
| 3 | source "$CONFIG_DIR/icons.sh" | ||
| 4 | |||
| 5 | CACHE="/tmp/sketchybar_${NAME}.txt" | ||
| 6 | case "$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 ;; | ||
| 12 | esac | ||
| 13 | |||
| 14 | RAW="$(pmset -g batt)" | ||
| 15 | PCT="$(printf '%s' "$RAW" | grep -Eo '[0-9]+%' | head -1 | tr -d '%')" | ||
| 16 | CHARGING="$(printf '%s' "$RAW" | grep -c 'AC Power')" | ||
| 17 | [ -z "$PCT" ] && exit 0 | ||
| 18 | |||
| 19 | if [ "$PCT" -ge 80 ]; then ICON=$BAT_4 | ||
| 20 | elif [ "$PCT" -ge 60 ]; then ICON=$BAT_3 | ||
| 21 | elif [ "$PCT" -ge 40 ]; then ICON=$BAT_2 | ||
| 22 | elif [ "$PCT" -ge 20 ]; then ICON=$BAT_1 | ||
| 23 | else ICON=$BAT_0 | ||
| 24 | fi | ||
| 25 | |||
| 26 | COLOR=$TEXT | ||
| 27 | if [ "$CHARGING" -ge 1 ]; then ICON=$BAT_CHARGING; COLOR=$TEXT | ||
| 28 | elif [ "$PCT" -le 10 ]; then COLOR=$RED | ||
| 29 | elif [ "$PCT" -le 25 ]; then COLOR=$YELLOW | ||
| 30 | fi | ||
| 31 | |||
| 32 | sketchybar --set "$NAME" label="${PCT}% ${ICON}" label.color=$COLOR | ||
| 33 | |||
| 34 | # popup: state + time remaining (Waybar battery format-alt "{time}") | ||
| 35 | STATE="$(printf '%s' "$RAW" | grep -Eo 'discharging|charging|charged|AC attached|finishing charge' | head -1)" | ||
| 36 | TIME="$(printf '%s' "$RAW" | grep -Eo '[0-9]+:[0-9]+' | head -1)" | ||
| 37 | LINE="${PCT}%" | ||
| 38 | [ -n "$STATE" ] && LINE="$LINE · $STATE" | ||
| 39 | if [ -n "$TIME" ] && [ "$TIME" != "0:00" ]; then | ||
| 40 | if [ "$CHARGING" -ge 1 ]; then LINE="$LINE · $TIME to full"; else LINE="$LINE · $TIME remaining"; fi | ||
| 41 | fi | ||
| 42 | printf '%s' "$LINE" > "$CACHE" | ||
