Alterando a configuração do Systemd HandleLidSwitch durante o tempo de execução?

Alterando a configuração do Systemd HandleLidSwitch durante o tempo de execução?

A configuração HandleLidSwitché definida da /etc/systemd/logind.confseguinte 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-inhibitcomando 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-inhibitsem argumentos listará os inibidores existentes.

informação relacionada