A configuração HandleLidSwitch
é definida da /etc/systemd/logind.conf
seguinte forma:
HandleLidSwitch=<hibernate,ignore,...>
A configuração foi aplicada com sucesso na inicialização. No entanto, gostaria de alterar a configuração durante o tempo de execução, dependendo do estado AC:
Se meu laptop estiver carregando, use HandleLidSwitch=ignore
. Se meu laptop estiver com bateria, use HandleLidSwitch=suspend
.
Isso é de alguma forma possível de realizar com o systemd atual?
Responder1
logind fornece umbloqueio inibidormecanismo que permite que o software do usuário substitua a política do sistema. Ele permite, por exemplo, que o Gnome assuma o controle de todos os botões e interruptores ACPI enquanto estiver ativo. Você pode usá-lo para inibir o "interruptor da tampa da alça" quando o dispositivo estiver conectado e soltar a trava quando estiver desconectado.
A melhor abordagem seria escrever um script em uma linguagem com ligações DBus e usar o Inhibit()
método logind, mas o systemd fornece um systemd-inhibit
comando que pode ser usado a partir de um script Shell. Observe que ele deve ser usado como wrapper, mantendo o bloqueio até que o processo filho saia:
systemd-inhibit --what=handle-lid-switch SOME_COMMAND_HERE
PS Tudo isso pressupõe que você não esteja usando um ambiente de área de trabalho que já esteja bloqueando o "handle-lid-switch". Executar systemd-inhibit
sem argumentos listará os inibidores existentes.