#!/usr/bin/env bash source "$CONFIG_DIR/colors.sh" source "$CONFIG_DIR/icons.sh" CACHE="/tmp/sketchybar_${NAME}.txt" case "$SENDER" in mouse.entered) [ -f "$CACHE" ] && sketchybar --set "$NAME.details" label="$(cat "$CACHE")" sketchybar --set "$NAME" popup.drawing=on; exit 0 ;; mouse.exited) sketchybar --set "$NAME" popup.drawing=off; exit 0 ;; esac RAW="$(pmset -g batt)" PCT="$(printf '%s' "$RAW" | grep -Eo '[0-9]+%' | head -1 | tr -d '%')" CHARGING="$(printf '%s' "$RAW" | grep -c 'AC Power')" [ -z "$PCT" ] && exit 0 if [ "$PCT" -ge 80 ]; then ICON=$BAT_4 elif [ "$PCT" -ge 60 ]; then ICON=$BAT_3 elif [ "$PCT" -ge 40 ]; then ICON=$BAT_2 elif [ "$PCT" -ge 20 ]; then ICON=$BAT_1 else ICON=$BAT_0 fi COLOR=$TEXT if [ "$CHARGING" -ge 1 ]; then ICON=$BAT_CHARGING; COLOR=$TEXT elif [ "$PCT" -le 10 ]; then COLOR=$RED elif [ "$PCT" -le 25 ]; then COLOR=$YELLOW fi sketchybar --set "$NAME" label="${PCT}% ${ICON}" label.color=$COLOR # popup: state + time remaining (Waybar battery format-alt "{time}") STATE="$(printf '%s' "$RAW" | grep -Eo 'discharging|charging|charged|AC attached|finishing charge' | head -1)" TIME="$(printf '%s' "$RAW" | grep -Eo '[0-9]+:[0-9]+' | head -1)" LINE="${PCT}%" [ -n "$STATE" ] && LINE="$LINE · $STATE" if [ -n "$TIME" ] && [ "$TIME" != "0:00" ]; then if [ "$CHARGING" -ge 1 ]; then LINE="$LINE · $TIME to full"; else LINE="$LINE · $TIME remaining"; fi fi printf '%s' "$LINE" > "$CACHE"