Dotfiles/desktopenvs/hyprlua/scripts/batteryperc

49 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Query upower for the BAT1 battery; awk strips the "%" so we get a plain number.
perc=$(upower -i /org/freedesktop/UPower/devices/battery_BAT1 | awk '/percentage/ {gsub("%",""); print $2}')
# State can be "charging", "discharging", "fully-charged", etc.
state=$(upower -i /org/freedesktop/UPower/devices/battery_BAT1 | awk '/state/ {print $2}')
# Check if values are not empty
if [ -z "$perc" ] || [ -z "$state" ]; then
echo "Battery info unavailable"
exit 1
fi
# Strip any fractional part for integer comparisons below (upower may return "42.00").
num=${perc%%.*} # In case perc is float
# Show a plug/charging icon regardless of level while the charger is connected.
if [ "$state" == "charging" ]; then
echo "󰂄 ${perc}%"
else
# Map the level to a Nerd Font battery icon — 10% steps, critical at ≤10%.
if [ "$num" -gt 95 ]; then
echo "󰁹 ${perc}%"
elif [ "$num" -gt 90 ]; then
echo "󰂂 ${perc}%"
elif [ "$num" -gt 80 ]; then
echo "󰂁 ${perc}%"
elif [ "$num" -gt 70 ]; then
echo "󰂀 ${perc}%"
elif [ "$num" -gt 60 ]; then
echo "󰁿 ${perc}%"
elif [ "$num" -gt 50 ]; then
echo "󰁾 ${perc}%"
elif [ "$num" -gt 40 ]; then
echo "󰁽 ${perc}%"
elif [ "$num" -gt 30 ]; then
echo "󰁼 ${perc}%"
elif [ "$num" -gt 20 ]; then
echo "󰁻 ${perc}%"
elif [ "$num" -gt 10 ]; then
echo "󰁺 ${perc}%"
else
# At ≤10% fire a critical urgency desktop notification via dunst/libnotify.
notify-send --urgency=critical -t 2000 "󱃍 low battery, please charge"
echo "󰂎 ${perc}%"
fi
fi