#!/bin/sh # Avisa con una notificación cuando la batería baja del 15 % y del 5 % # mientras se descarga, y al 3 % suspende (con slock, como al cerrar la # tapa) en vez de dejar que se apague de golpe. Cada umbral actúa una vez; # al enchufar el cargador se reinicia. Se lanza desde .xinitrc y comprueba # cada minuto. Suspender usa "sudo -n zzz" (regla en sistema/etc/sudoers.d). BAJA=15 CRITICA=5 SUSPENDER=3 bat= for b in /sys/class/power_supply/BAT*; do [ -e "$b/capacity" ] && bat=$b && break done [ -n "$bat" ] || exit 0 avisado=100 while :; do nivel=$(cat "$bat/capacity") estado=$(cat "$bat/status") if [ "$estado" != Discharging ]; then avisado=100 elif [ "$nivel" -le "$SUSPENDER" ] && [ "$avisado" -gt "$SUSPENDER" ]; then notify-send -u critical -h string:x-dunst-stack-tag:bateria \ -i battery-empty "Batería agotada" "Queda un $nivel %: suspendiendo en 10 s" avisado=$SUSPENDER sleep 10 [ "$(cat "$bat/status")" = Discharging ] && sudo -n zzz elif [ "$nivel" -le "$CRITICA" ] && [ "$avisado" -gt "$CRITICA" ]; then notify-send -u critical -h string:x-dunst-stack-tag:bateria \ -i battery-empty "Batería crítica" "Queda un $nivel %: enchufa el cargador ya" avisado=$CRITICA elif [ "$nivel" -le "$BAJA" ] && [ "$avisado" -gt "$BAJA" ]; then notify-send -h string:x-dunst-stack-tag:bateria \ -i battery-caution "Batería baja" "Queda un $nivel %" avisado=$BAJA fi sleep 60 done