Existem várias maneiras de implementá-lo, pois existem muitos esquemas de gerenciamento de energia diferentes, dependendo do que você instalou.
Este simples funciona para mim no Debian Jessie minimalista, sem qualquer ambiente de desktop, apenas com o gerenciador de janelas pequeno e rápido do icewm. (Ele é reduzido porque é muito lento, caso contrário, e dessa maneira supera o GNOME em um hardware muito melhor)
Especificamente, eu instalei os seguintes pacotes:
acpi acpi-fakekey acpi-support acpi-support-base acpid pm-utils,
mas NENHUMA das seguintes opções (após eliminá-las):
gnome * kde * systemd * uswsusp upower laptop-mode-tools policykit-1 do hibernate
Então, eu apenas coloquei isso /etc/cron.d/battery_low_check
(tudo em uma linha, divida para facilitar a leitura):
*/5 * * * * root acpi --battery |
awk -F, '/Discharging/ { if (int($2) < 10) print }' |
xargs -ri acpi_fakekey 205
É rápido, usa pouco recurso e não depende de outros daemon (se for verdade, será ignorado se estiver ativo - veja /usr/share/acpi-support/policy-funcs
para obter detalhes).
O que faz: a cada 5 minutos ( */5
- você pode mudar para cada minuto usando apenas *
se precisar verificar a bateria com mais frequência), ele pesquisará o status da bateria (" acpi --battery ") e executará o comando depois xargs -ri
apenas se a bateria estiver " Descarregando "(ou seja, você não está conectado à corrente alternada) e o status da bateria é menor que 10%
(" int ($ 2) <10 "- fique à vontade para ajustá-lo às suas necessidades)
acpi_fakekey 205
por padrão, envia o KEY_SUSPEND
evento ACPI (como você pressionou uma tecla no laptop solicitando suspensão), que fará o que costuma fazer por você (configurado em /etc/default/acpi-support
) - para mim, ele hiberna para o disco.
Você pode usar outro comando em vez de, é acpi_fakekey 205
claro: como hibernate
(do pacote hibernate) s2disk
ou s2mem
(do pacote uswsusp), pm-suspend-hybrid
(do pacote pm-utils) etc.
BTW, números mágicos de chave como KEY_SUSPEND = 205 acima são definidos em /usr/share/acpi-support/key-constants
(outro interessante é provavelmente KEY_SLEEP = 142 )
sleepd -b 40
e nada aconteceu depois da marca de 40%. Eu também tenteisudo sleepd -b 40 -s pm-suspend
e nada acontece ...