Etapa 1: torne o pm-suspend acessível para todos os usuários, sem solicitação de senha
Faça sudo visudo
e adicione esta linha no final do arquivo: yourusername ALL=NOPASSWD: /usr/sbin/pm-suspend
Fonte: Como executo comandos específicos do sudo sem uma senha?
Etapa 2: criar o arquivo batwatch.desktop:
Este é o arquivo que iniciará automaticamente o script de monitoramento. O arquivo deve ser armazenado na pasta $HOME/.config/autostart/
.
[Desktop Entry]
Type=Application
Exec=/home/serg/bin/batwatch.sh
Hidden=false
NoDisplay=false
Name=Battery Monitor Script
Observe que o script está na minha pasta /home/serg/bin
. Você pode usar qualquer pasta que desejar, mas, para os padrões / usr / bin ou / home / username / bin, seria mais preferível.
Fonte: Como executar um script na inicialização
Etapa três: crie o script real, salve no mesmo local que Exec = line
Aqui está o script atual. Observe, estou usando o bash lá, mas também deve funcionar com o shell korn. Eu adicionei alguns comentários, então leia aqueles para entender o que o script faz exatamente
#!/bin/bash
# Check if the battery is connected
if [ -e /sys/class/power_supply/BAT1 ]; then
# this line is for debugging mostly. Could be removed
#notify-send --icon=info "STARTED MONITORING BATERY"
zenity --warning --text "STARTED MONITORING BATERY"
while true;do
# Get the capacity
CAPACITY=$( cat /sys/class/power_supply/BAT1/uevent | grep -i capacity | cut -d'=' -f2 )
case $CAPACITY in
# do stuff when we hit 11 % mark
[0-9]|11)
# send warning and suspend only if battery is discharging
# i.e., no charger connected
STATUS=$( cat /sys/class/power_supply/BAT1/uevent | grep -i status | cut -d'=' -f2 )
if [ $(echo $STATUS) == "Discharging" ]; then
#notify-send --urgency=critical --icon=dialog-warning "LOW BATTERY! SUSPENDING IN 30 sec"
zenity --warning --text "LOW BATTERY! SUSPENDING IN 30 sec"
sleep 30
gnome-screensaver-command -l && sudo pm-suspend
break
fi
;;
*)
sleep 1
continue
;;
esac
done
fi
Passo quatro: reinicie e teste se o script funciona
Para isso você pode ajustar o número [0-9]|11)
para qualquer valor que você goste, por exemplo, 65)
para suspender em 65%. O você suspenderá somente se você não estiver conectado à fonte de alimentação (ou seja, não está carregando).
Deixe-me saber se você gosta disso, e se funcionar, não se esqueça de fazer um upvote e clicar na marca cinza no lado esquerdo da minha resposta!
Felicidades!