diff options
| author | Justine Smithies <justine@smithies.me.uk> | 2026-01-24 17:19:05 +0000 |
|---|---|---|
| committer | Justine Smithies <justine@smithies.me.uk> | 2026-01-24 17:19:05 +0000 |
| commit | 278f79a4cb5f844e76bb47e50534ed5e28f36505 (patch) | |
| tree | 7ac1232511f162cdd82e1c1415c99a6c0ae0ba65 /.config/waybar/scripts/battery.sh | |
| parent | 5f7f807bfcfb09bd9b745b0530892046e2475307 (diff) | |
Initial commit
Diffstat (limited to '.config/waybar/scripts/battery.sh')
| -rwxr-xr-x | .config/waybar/scripts/battery.sh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/.config/waybar/scripts/battery.sh b/.config/waybar/scripts/battery.sh new file mode 100755 index 0000000..73fe1cd --- /dev/null +++ b/.config/waybar/scripts/battery.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +# Send a notification if battery is low, change status in info file accordingly +notify_low () { + + # Battery isn't much but is charging (don't notify) + [ "$status" = "on-line" ] && return + + # Battery critically low + if [ "$capacity" -le 10 ] && ! grep -q critically-low "$lowinfo"; then + notify-send -i "$HOME/.config/icons/critical-battery.png" -u critical "Battery critically low!" + echo critically-low >"$lowinfo" + + # Battery is low + elif [ "$capacity" -le 20 ] && ! grep -q low "$lowinfo"; then + notify-send -i "$HOME/.config/icons/low-battery.png" -t 5500 "Battery low!" + echo low >"$lowinfo" + fi +} + +status="$(apm | grep -E "AC Line status:" | sed -n -e 's/^.*AC Line status: //p')" +capacity="$(apm | grep -E "Remaining battery life:" | head -1 | sed -n -e 's/^.*Remaining battery life: //p' | sed 's/.$//')" + +# Get the low battery status from file ~/.cache/battery-low-status +lowinfo="$HOME/.cache/battery-low-status" +[ ! -e "$lowinfo" ] && touch "$lowinfo" + + +case $1 in + left-click) + ;; + *) + # Set charging icon and capacity icon + [ "$status" = "on-line" ] && charging_icon="" || charging_icon="" + [ "$capacity" -gt 100 ] && capacity=100 + if [ "$capacity" -lt 15 ]; then capacity_icon=' ' + elif [ "$capacity" -lt 40 ]; then capacity_icon=' ' + elif [ "$capacity" -lt 60 ]; then capacity_icon=' ' + elif [ "$capacity" -lt 90 ]; then capacity_icon=' ' + else capacity_icon=' ' + fi + + # Report low battery + [ "$capacity" -le 20 ] && notify_low + + # Reset low battery information in these cases + { [ "$capacity" -gt 20 ] || [ "$status" = "Charging" ]; } && [ -n "$(cat "$lowinfo")" ] && echo "" >"$lowinfo" + + text=$capacity + alt=" "$charging_icon + echo "{\"text\": \"$text"\", \"alt\": \"$alt"\", \"tooltip\":\"$tooltip\", \"class\": \"$class\", \"percentage\":"$capacity"}" + ;; +esac |
