sb-battery: notification on very low battery level
This commit is contained in:
@@ -28,28 +28,44 @@ do
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Critical low-battery notification at the "!" level (<=5% and discharging).
|
||||||
|
# Notify only once per discharge episode: a flag in /tmp suppresses repeats
|
||||||
|
# and is cleared the moment we stop discharging (plug in) or on reboot
|
||||||
|
# (since /tmp is wiped), so the next low event notifies again.
|
||||||
|
lowflag="/tmp/battery_low_notified_${battery##*/}"
|
||||||
|
if grep -q "Discharging" "$battery"/status; then
|
||||||
|
if [ "$capacity" -le 5 ] && [ ! -f "$lowflag" ]; then
|
||||||
|
notify-send -u critical "❗ Battery critically low" \
|
||||||
|
"Battery at ${capacity}%. Plug in the laptop now."
|
||||||
|
touch "$lowflag"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Plugged in (charging / not charging / full): arm for the next episode.
|
||||||
|
rm -f "$lowflag"
|
||||||
|
fi
|
||||||
|
|
||||||
unset status
|
unset status
|
||||||
status=$(sed "s/Not charging/🛑/" "$battery"/status)
|
status=$(sed "s/Not charging/🛑/" "$battery"/status)
|
||||||
# Center picture around the actual capacity.
|
# Center picture around the actual capacity.
|
||||||
# Displayable capacities: 0, 1/4, 1/2, 3/4, 1 -> intervall of length 25% centered around displaycategory
|
# Displayable capacities: 0, 1/4, 1/2, 3/4, 1 -> intervall of length 25% centered around displaycategory
|
||||||
# -> +- 12.5% for every level
|
# -> +- 12.5% for every level
|
||||||
if grep -qE "(Discharging|Charging)" "$battery"/status; then
|
if grep -qE "(Discharging|Charging)" "$battery"/status; then
|
||||||
status=
|
status=" "
|
||||||
[ "$capacity" -le 87 ] &&
|
[ "$capacity" -le 87 ] &&
|
||||||
status=""
|
status=" "
|
||||||
[ "$capacity" -le 63 ] &&
|
[ "$capacity" -le 63 ] &&
|
||||||
status=""
|
status=" "
|
||||||
[ "$capacity" -le 37 ] &&
|
[ "$capacity" -le 37 ] &&
|
||||||
status=""
|
status=" "
|
||||||
[ "$capacity" -le 13 ] &&
|
[ "$capacity" -le 13 ] &&
|
||||||
status=""
|
status=" "
|
||||||
[ "$capacity" -le 5 ] &&
|
[ "$capacity" -le 5 ] &&
|
||||||
status="❗"
|
status=" ❗"
|
||||||
if grep -q "Charging" "$battery"/status; then
|
if grep -q "Charging" "$battery"/status; then
|
||||||
status="${status}🔌"
|
status="${status}🔌"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
printf "%s \n" "$status"
|
printf "%s\n" "$status"
|
||||||
else
|
else
|
||||||
echo "Error. Capacity:$capacity" > /dev/stderr #if battery fails during reading, quit
|
echo "Error. Capacity:$capacity" > /dev/stderr #if battery fails during reading, quit
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user