Como posso obter um alerta quando minha bateria estiver prestes a morrer no Linux Mint?

26

Isso acontece comigo mais do que eu gostaria de admitir, mas às vezes eu não percebo o poder ficando baixo desde que ele só aparece na minha barra de status, então o computador simplesmente sai. Eu gostaria de um grande alerta que me avise antes que isso aconteça. Existe alguma maneira de me alertar? O Ubuntu tem um popup legal que diz que está ficando baixo.

    
por Travis Reeder 09.01.2013 / 18:59

12 respostas

24

escreva um roteiro!

battery_level='acpi -b | grep -P -o '[0-9]+(?=%)''
if [ $battery_level -le 10 ]
then
    notify-send "Battery low" "Battery level is ${battery_level}%!"
fi

então cron-lo para executar a cada poucos minutos ou mais. Mas sim, se você puder fazer isso através da GUI, provavelmente é uma maneira muito melhor de fazer isso.

    
por 10.01.2013 / 22:54
6

re: A resposta de hdgarrood, definindo cron para executar notify-send , na verdade acabou sendo dolorosamente delicada. (Eu acho que crontab -e persiste através de reinicializações por padrão, felizmente). Eu segui vários guias, não tenho certeza do que exatamente o consertou no final, mas aqui está minha configuração completa para executar o verificador a cada 5 minutos:

$ crontab -e

*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif

$ cat .notify-send_setup

#!/bin/bash
touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus

exit 0

$ cat .battnotif

#!/bin/bash
export DISPLAY=:0
XAUTHORITY=/home/nrw/.Xauthority

if [ -r "$HOME/.dbus/Xdbus" ]; then
    . "$HOME/.dbus/Xdbus"
fi

battery_level='acpi -b | grep -P -o '[0-9]+(?=%)''

# I tried to only notify when not charging, but could not get it to work
# STATUS=$(cat /sys/class/power_supply/ADP1/online)
# if [ $battery_level -le 15 ] && [ $STATUS == "0" ]

if [ $battery_level -le 15 ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
    echo 'batt low' >> /home/nrw/cron.log
fi

echo 'ran batt' >> /home/nrw/cron.log

Certifique-se de chmod +x dos scripts bash.

    
por 18.02.2015 / 03:03
3

Agora executo o seguinte:

$ crontab -e
*/5 * * * * /home/<my username>/bin/checkLowBattery
$ cat /home/<my username>/bin/checkLowBattery
#!/bin/bash

POWERSUPPLY="/sys/class/power_supply/ACAD/online" # could be different on your system!
TOO_LOW=20 # how low is too low?
NOT_CHARGING="0"
ICON="/usr/share/icons/ubuntu-mono-dark/status/24/battery-low.svg" # eye candy

export DISPLAY=:0

BATTERY_LEVEL=$(acpi -b | grep -P -o '[0-9]+(?=%)')
STATUS=$(cat $POWERSUPPLY)

if [ $BATTERY_LEVEL -le $TOO_LOW -a $STATUS = $NOT_CHARGING ]
then
    /usr/bin/notify-send -u critical -i "$ICON" -t 3000 "Battery low" "Battery level is ${BATTERY_LEVEL}%!"
fi

exit 0

Como você pode ver, este é apenas o código do orangenarwhals com algumas alterações:

  • sem truques de dbus, de alguma forma eu não precisei
  • coloque algumas "constantes" em variáveis no início do código
  • avisos implementados somente quando a bateria não está carregando (dê uma olhada em man test , explica como fazer ANDs, entre outras coisas.)
  • ícone adicionado (encontre alguns candidatos em seu sistema com algo como: $ find /usr/share/icons/ -iname "*batt*low*" )
  • tempo de expiração em milissegundos

não se esqueça de chmod +x dos seus scripts, você pode então executá-los diretamente do cron (tab), sem necessidade de sh .

(Isso funciona no Ubuntu usando o Xmonad.)

    
por 14.03.2015 / 16:07
2

Minor twist - no Knoppix (concedido, não Mint como usado pelo OP) o notify-send não estava disponível (o pacote libnotify-bin não está instalado), então achei isto útil para o alerta:

xmessage Battery low & mplayer /usr/lib/libreoffice/share/gallery/sounds/beam.wav

Eu só joguei isso no Comando de Alarme do painel do Monitor de Bateria do LXDE, sem necessidade de um script.

Isso pressupõe que você tenha o LibreOffice instalado, mas que o .wav produz um som de baixa potência. Não há praticamente nenhum .ogg no Knoppix.

    
por 14.10.2015 / 20:15
1

Eu tive esse mesmo problema e descobri uma solução alternativa. Eu instalei de repositórios do Linux Mint um aplicativo chamado GKrellM. Ele monitora muitas coisas em sua máquina e há bateria. Configuração com alarmes, funciona para mim como um encanto.

mais informações em:

link

    
por 11.11.2013 / 02:15
1

O problema está relacionado ao ambiente do KDE. Eu tenho o mesmo problema com o MintMAYA KDE_version. Quando trabalhei com o Mint9_Gnome, um pop-up muito útil apareceu quando um certo nível de baixo consumo de energia foi atingido (auto-configurado out_of_the_box em instalações novas). Muito, muito chato, sendo desligado sem conselhos e sem ajuda fundada mesmo pesquisando muito: (

    
por 15.10.2014 / 17:53
1

Como você está aparentemente executando o Cinnamon, basta instalar Applet da bateria com monitoramento e desligamento (BAMS) .

Clique com o botão direito do mouse em um painel → + Adicionar miniaplicativos ao painel Miniaplicativos disponíveis (online) , digite 'BAMS' no widget de pesquisa e instale e configure isso.

Não é o mais chamativo, mas até agora ele já me alertou quando meu notebook foi inconscientemente desconectado.

    
por 24.03.2017 / 07:56
1

Eu tenho o mesmo problema e é muito frustrante. Eu resolvi usando o script BatteryAlert.sh :

#!/bin/bash

BATTERY=$(upower -e | grep 'BAT')

while :
do
    BATTERY_PERCENTAGE=$(upower -i $BATTERY|grep percentage|awk '{ print $2 }'|sed s/'%'/''/g)
    CABLE=$(upower -d | grep -n2 line-power | grep online | awk '{ print $3 }')

    if [[ "$BATTERY_PERCENTAGE" -lt "10" && $CABLE = "no" ]]; then

        notify-send --urgency=critical "WARNING: Battery is about to die"  "Plug in the power cable"
        play /usr/share/sounds/KDE-Sys-Warning.ogg &> /dev/null 
    fi

sleep 10

done

Estou usando o KDE, mas você pode usá-lo em todos os ambientes de área de trabalho. Você não precisa executar isso como usuário root ou enlouquecer com a sintaxe do crontab. Você só precisa alterar o som da notificação se quiser um alerta sonoro. Se você quiser iniciar o script automaticamente quando o ambiente de desktop começar a colocar o script na pasta $ USER / bin com o script BatteryAlertLauncher.sh :

#!/bin/bash

function getRunningProcesses 
{
    ps -aux | grep -v grep | grep BatteryAlert.sh
}

if [[ -n "$(getRunningProcesses)" ]] ; then
    exit
fi

BatteryAlert.sh&

Certifique-se de que eles são executáveis:

chmod u+x $USER/bin/BatteryAlert*

Em seguida, basta executar o seguinte comando:

ln -s /home/$(USER)/bin/BatteryAlertLauncher.sh .config/autostart/

Você também pode executar o script de alerta manualmente a partir do bash, inserindo este comando:

BatteryAlertLauncher.sh
    
por 03.09.2015 / 12:14
0

Como não tenho Gnome Shell ou Cinnamon instalado, não posso ser de ajuda direta, pois o acesso à fonte poderia ser muito prático, já que é bastante fácil adicionar uma extensão tão rudimentar com JavaScript.

Você deve abrir:

/usr/share/cinnamon/js/ui/status/power.js

e pesquise percentageText - subseqüentemente, você deve poder adicionar uma mensagem pop-up ou um alerta.

    
por 11.01.2013 / 01:34
0

Foi assim que fiz no meu Arch linux com o Gnome como DE:

#!/bin/bash

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
battery_level='acpi -b | grep -P -o '[0-9]+(?=%)''

STATUS=$(cat /sys/class/power_supply/ACAD/online)
if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi

A palavra ACAD em STATUS=$(cat /sys/class/power_supply/ACAD/online) mudará dependendo da marca do laptop. Ele é usado para descobrir se a sua colo está conectada a um adaptador AC ou não. Aqui está como meu crontab se parece:

* * * * * bash <path to script>

Não se esqueça de tornar o script executável com chmod u+x <path to script>

    
por 01.01.2016 / 21:03
0

Este simples funciona muito bem para mim, com apenas um simples pacote acpi necessário para ser instalado (sem deamons, ambientes de desktop específicos ou similares).

No seu usuário crontab ( crontab -e ) coloque o seguinte (tudo em uma linha, é dividido por legibilidade aqui):

*/3 * * * * acpi --battery | 
    awk -F, '/Discharging/ { if (int($2) < 15) print }' | xargs -ri 
    env DISPLAY=:0 zenity --warning --text "battery low\n{}"

O que ele faz é verificar o nível da bateria ( acpi --battery ) e se você não estiver conectado ao carregador ( /Discharging/ ) e se a bateria for < 15 %, a cada 3 minutos ( */3 ) exibirá a mensagem via zenity para te incomodar.

Em vez de zenity, você poderia usar xmessage (em uma máquina realmente espartana) ou mesmo algo como aplay -q /usr/lib/libreoffice/share/gallery/sounds/cow.wav para notificações de áudio (que têm a vantagem de não interromper a digitação do seu teclado e funcionar mesmo para multi - laptops de usuário com várias sessões, em que DISPLAY=:0 hack falharia

Se você também precisar suspender / hibernar a máquina em determinado nível crítico, consulte esta resposta

    
por 24.01.2017 / 02:57
0

Faça o download de um applet chamado BAMS. Ele irá alertá-lo automaticamente quando a bateria atingir um certo nível decidido por você. É a solução mais simples.

    
por 03.09.2017 / 09:05