I used crontab -e to define the following:
*/5 * * * * env DISPLAY=:0 /home/max/.bin/battery-check.sh
The contents of the script are:
#!/bin/bash
# Battery level warning script
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [[ "$battery_level" -le "80" && "$battery_level" -gt "10" ]]
then
notify-send "Battery low warning" "
Battery level is ${battery_level}%"
elif [[ "$battery_level" -le "10" && "$battery_level" -gt "5" ]]
then
notify-send "Battery very low warning" "
Battery level is ${battery_level}%
Use ac power now,
or shutdown is imminent - close applications"
else [[ "$battery_level" -le "5" ]]
# our custom actions for critical battery level
notify-send "Battery critical warning" "
Battery level is ${battery_level}%
Shutting system down now"
fi
Some statements, such as the first -le "80" are just for test/debug purposes. The problem with this script is that it results in a pop-up every 5 minutes reporting the last condition:
Battery critical warning
Battery level is 100%
Shutting system down now
else [[ "$battery_level" -le "5" ]], orelif [[ "$battery_level" -le "5" ]]