#!/bin/sh psupath=/sys/class/power_supply warning_level=0 # 0 = not warned, 1 = warned, 2 = warned critical sum_props() { for prop in $(cat $psupath/*/$1); do sum=$(( $sum + $prop )); done echo $sum } is_discharging() { cat $psupath/*/status | grep "Discharging" > /dev/null ; } while true; do capacity=$(( $(sum_props energy_now) * 100 / $(sum_props energy_full) )) if is_discharging; then if [ $capacity -le 5 ] && [ $warning_level -lt 2 ]; then notify_send "Critical Low Battery Warning" "${capacity}% remains" elif [ $capacity -le 20 ] && [ $warning_level -lt 1 ]; then notify_send "Low Battery Warning" "${capacity}% remains" fi else warning_level=0 fi printf "\r%d%%" $capacity sleep 3 done