¿Cambiar la configuración de Systemd HandleLidSwitch durante el tiempo de ejecución?

¿Cambiar la configuración de Systemd HandleLidSwitch durante el tiempo de ejecución?

La configuración HandleLidSwitchse define de /etc/systemd/logind.confla siguiente manera:

HandleLidSwitch=<hibernate,ignore,...>

La configuración se aplica correctamente en el arranque. Sin embargo, me gustaría cambiar la configuración durante el tiempo de ejecución según el estado de CA:

Si mi computadora portátil se está cargando, use HandleLidSwitch=ignore. Si mi computadora portátil tiene batería, use HandleLidSwitch=suspend.

¿Es esto posible de alguna manera realizarlo con el systemd actual?

Respuesta1

logind proporciona unabloqueo inhibidorMecanismo que permite que el software del usuario anule la política del sistema. Permite, por ejemplo, que Gnome tome el control de todos los botones e interruptores ACPI mientras esté activo. Puede usarlo para inhibir el "interruptor de manija-tapa" cuando el dispositivo está enchufado y soltar el bloqueo cuando está desenchufado.

El mejor enfoque sería escribir un script en un lenguaje con enlaces DBus y usar el Inhibit()método logind, pero systemd proporciona un systemd-inhibitcomando que se puede usar desde un script de shell. Tenga en cuenta que está pensado para usarse como contenedor, manteniendo el bloqueo hasta que salga el proceso hijo:

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

PD: Todo esto supone que no estás utilizando un entorno de escritorio que ya esté bloqueando el "interruptor de tapa de manija". Ejecutarlo systemd-inhibitsin argumentos enumerará los inhibidores existentes.

información relacionada