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

1

A configuração HandleLidSwitch é definida em /etc/systemd/logind.conf da seguinte forma:

HandleLidSwitch=<hibernate,ignore,...>

A configuração é aplicada com sucesso na inicialização. No entanto, gostaria de alterar a configuração durante o tempo de execução, dependendo do estado de AC:

Se o meu laptop estiver carregando, use HandleLidSwitch=ignore . Se meu laptop estiver com bateria, use HandleLidSwitch=suspend .

Isso é possível de alguma forma com o systemd atual?

    
por orschiro 06.05.2014 / 11:04

1 resposta

4

O logind fornece um mecanismo de bloqueio do inibidor que permite que o software do usuário substitua a diretiva do sistema. Ele permite, por exemplo, que o Gnome assuma o controle de todos os botões e switches da ACPI enquanto estiver ativo. Você pode usá-lo para inibir o "interruptor da tampa do manipulador" quando o dispositivo estiver conectado e soltar o bloqueio quando estiver desconectado.

A melhor abordagem seria escrever um script em uma linguagem com ligações DBus e usar o método Inhibit() do logind, mas o systemd fornece um comando systemd-inhibit que pode ser usado a partir de um script de shell. Observe que ele deve ser usado como um wrapper, mantendo a trava até que o processo filho saia:

systemd-inhibit --what=handle-lid-switch SOME_COMMAND_HERE

P.S. Isso tudo presume que você não está usando um ambiente de desktop que já está bloqueando o "handle-lid-switch". A execução de systemd-inhibit sem argumentos listará os inibidores existentes.

    
por 07.05.2014 / 18:34