Esistono molti modi in cui può essere implementato, in quanto esistono diversi schemi di gestione del potere implementati a seconda di ciò che è stato installato.
Questo semplice funziona per me su Debian Jessie minimalista senza alcun ambiente desktop, solo con il window manager icewm piccolo e veloce. (Viene ridotto perché è troppo lento altrimenti, e in questo modo supera GNOME su hardware molto migliore)
In particolare, ho installato i seguenti pacchetti:
acpi acpi-fakekey acpi-support acpi-support-base acpid pm-utils
ma ho NESSUNO dei seguenti (dopo averli eliminati):
gnome * kde * systemd * uswsusp upower laptop-mode-tools ibernare policykit-1
Quindi l'ho appena inserito /etc/cron.d/battery_low_check(tutto in una riga, diviso per leggibilità):
*/5 * * * * root acpi --battery |
awk -F, '/Discharging/ { if (int($2) < 10) print }' |
xargs -ri acpi_fakekey 205
È rapido, a basso consumo di risorse e non dipende da altri demoni (in realtà, verrà ignorato se sono attivi - vedi /usr/share/acpi-support/policy-funcsper i dettagli).
Cosa fa: ogni 5 minuti ( */5- puoi passare a ogni minuto semplicemente usando *se ne hai bisogno per controllare la batteria più spesso) controllerà lo stato della batteria (" acpi --battery ") ed eseguirà il comando xargs -risolo se la batteria è " Scarico "(ovvero, non sei collegato a CA) e lo stato della batteria è inferiore a 10%(" int ($ 2) <10 "- sentiti libero di sintonizzarti sulle tue esigenze)
acpi_fakekey 205per impostazione predefinita invierà un KEY_SUSPENDevento ACPI (come se tu avessi premuto un tasto sul laptop che richiede la sospensione), che poi farà tutto ciò che di solito fa per te (configurato in /etc/default/acpi-support) - per me va in letargo su disco.
È possibile utilizzare altri comandi invece acpi_fakekey 205ovviamente: like hibernate(dal pacchetto hibernate) s2disko s2mem(dal pacchetto uswsusp), pm-suspend-hybrid(dal pacchetto pm-utils) ecc.
A proposito, i numeri di chiave magica come KEY_SUSPEND = 205 sopra sono definiti in /usr/share/acpi-support/key-constants(l'altro interessante è probabilmente KEY_SLEEP = 142 )
sleepd -b 40e non è successo niente dopo il 40%. Ho anche provatosudo sleepd -b 40 -s pm-suspende non succede nulla ...