Monitorando a Bateria do Notebook via Shell Script no i3, bspwm ou outros

Nesse tutorial vamos mostrar uma forma mais simples e interessante.


Monitorando a Bateria do Notebook via Shell Script no i3, bspwm ou outros

Existem diversos aplicativos que você pode instalar e configurar para atender essa necessidade, entre eles:

Mas nesse tutorial vamos mostrar uma forma que nem precisa de software. Todas as informações da sua bateria ficam no diretório: /sys/class/power_supply/BAT[NUM]/ onde o [NUM] é um número que pode ser diferente no seu sistema, use TAB após rodar o comando até a palavra BAT para descobrir . Vamos assumir que é BAT1 , pra obter todas as informações da sua bateria, rode: cat /sys/class/power_supply/BAT1/*:

marcos@gentoo ~ $ cat /sys/class/power_supply/BAT1/*
85000
45
Normal
2800000
3780000
1260000
692000
547
cat: /sys/class/power_supply/BAT1/device: É um diretório
SAMSUNG Electronics
SR Real Battery
cat: /sys/class/power_supply/BAT1/power: É um diretório
1
123456789
Discharging
cat: /sys/class/power_supply/BAT1/subsystem: É um diretório
Li-ion
Battery
POWER_SUPPLY_NAME=BAT1
POWER_SUPPLY_STATUS=Discharging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=547
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11400000
POWER_SUPPLY_VOLTAGE_NOW=10980000
POWER_SUPPLY_CURRENT_NOW=692000
POWER_SUPPLY_CHARGE_FULL_DESIGN=3780000
POWER_SUPPLY_CHARGE_FULL=2800000
POWER_SUPPLY_CHARGE_NOW=1260000
POWER_SUPPLY_CAPACITY=45
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_MODEL_NAME=SR Real Battery
POWER_SUPPLY_MANUFACTURER=SAMSUNG Electronics
POWER_SUPPLY_SERIAL_NUMBER=123456789
11400000
10980000

Se quiser saber somente em quantos por cento está no momento, use:

cat /sys/class/power_supply/BAT1/capacity

Se quiser saber se está descarregando, use:

cat /sys/class/power_supply/BAT1/status

E assim por diante, cada arquivo dentro do diretório armazena uma informação.

Dica extra

Se estiver usando Polybar, crie um módulo no config do Polybar da seguinte, forma exemplo:

[module/menu]
type = custom/script
exec = ~/.config/polybar/bat.sh
click-left = ~/.config/bat.sh &
format-spacing = 1

Nesse caso, eu use no módulo menu , mas é do tipo script

Obs.: É o único módulo script do meu config, se no seu caso não funcionar, use a condição abaixo num module/script que já exista.

E no arquivo bat.sh tem o seguinte script, detalhe para o comando notify-send que mostra uma notificação se a bateria estiver menor que 20% , para mais informações sobre notificações no seu desktop veja esse link: LINK

#!/bin/bash
LEVEL=$(cat /sys/class/power_supply/BAT1/capacity)
STATUS=$(cat /sys/class/power_supply/BAT1/status)

if [[ $LEVEL -lt 20 ]] ; then
        if [[ "$STATUS" == "Discharging" ]]; then
          notify-send --urgency=critical --icon=battery-caution "Bateria baixa ${LEVEL}%" "Descarregando"
        fi
fi

A opção && "$STATUS" == "Discharging" é importante para parar as notificações se você conectar a tomada.

Se quiser, você pode rodar o script em background assim que iniciar sessão, exemplos:

  • Para bspwm vim $HOME/.config/bspwm/bspwmrc
sh ~/caminho/para/script.sh &
  • Para i3 vim $HOME/.config/i3/config
exec_always --no-startup-id $HOME/caminho/para/script.sh &

Ou qualquer outro caso, lembrando que o arquivo ~/.xprofile pode ser criado se não existir e se você usar LightDM como o script em background também, que funcionará em WMs e GUIs .

Pronto, agora o notebook não desligará mais por falta de energia!😁️

Assista ao vídeo

Link para o Vídeo

Vídeos e artigos recomendados


i3wm i3wm wm


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo

Artigos Relacionados




Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!


caso queira entrar em contato conosco, envie-nos um e-mail.