Você está procurando por udev
, que detecta alterações em vários estados do sistema, incluindo conectar dispositivos (ou desconectá-los). Você pode fazer o script do udev para realizar alguma ação quando um dispositivo é anexado ou removido.
O Udev é, francamente, bastante complexo, e você vai querer fazer alguns testes realmente básicos para ter certeza de que está detectando o que está procurando.
Os passos básicos são estes:
Monitore seu sistema:
sudo udevadm monitor
Isso informa o que o udev "vê".
Com esta execução, conecte a fonte de alimentação e veja o que o udevadm lhe diz. Desligue-o novamente: veja o que o udevadm lhe diz. Provavelmente não fará sentido ainda, mas tudo bem; você sabe como monitorar o udev agora, e isso é útil.
Pare esse processo e faça o seguinte:
sudo udevadm info --path=/sys/class/power_supply/ac
ou
sudo udevadm info --path=/sys/class/power_supply/battery
que fornece informações sobre os sistemas AC e BATTERY. Assim:
P: /devices/platform/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/battery E: DEVPATH=/devices/platform/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/battery E: POWER_SUPPLY_CAPACITY=100 E: POWER_SUPPLY_CURRENT_NOW=0 E: POWER_SUPPLY_ENERGY_FULL_DESIGN=3200 E: POWER_SUPPLY_HEALTH=Good E: POWER_SUPPLY_MODEL_NAME=battery E: POWER_SUPPLY_NAME=battery E: POWER_SUPPLY_ONLINE=0 E: POWER_SUPPLY_PRESENT=0 E: POWER_SUPPLY_STATUS=Full E: POWER_SUPPLY_TECHNOLOGY=Li-ion E: POWER_SUPPLY_TEMP=300 E: POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4200000 E: POWER_SUPPLY_VOLTAGE_MIN_DESIGN=3300 E: POWER_SUPPLY_VOLTAGE_NOW=0 E: SUBSYSTEM=power_supply
As linhas E:
são atributos de ambiente que você pode usar para gravar uma regra do udev.
Escreva uma regra básica do udev (eu normalmente apenas escrevo um para criar uma entrada de log em algum lugar do meu disco quando o evento acontece; dessa forma, sei que estou acionando algo. Depois volto e faço o script útil.) / p>
Por exemplo:
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Charging", RUN+="/path/to/some/script.sh"
ou você pode usar POWER_SUPPLY_PRESENT=1
... você terá que experimentar com base nos valores exibidos no seu computador.
Coloque este script do udev em /etc/udev/rules.d
(um nome como 80.power.rules
seria convencional) e reinicie seu computador. Tecnicamente, você pode simplesmente reiniciar o udev, mas acho que não é confiável.
Veja se o seu script é acionado quando o seu AC está conectado.
Refine sua regra do udev e o script que ela aciona.
Há muito mais para udev, então mergulhe!