Die HandleLidSwitch-Einstellung von systemd während der Laufzeit ändern?

Die HandleLidSwitch-Einstellung von systemd während der Laufzeit ändern?

Die Einstellung ist wie folgt HandleLidSwitchdefiniert :/etc/systemd/logind.conf

HandleLidSwitch=<hibernate,ignore,...>

Die Einstellung wird beim Booten erfolgreich übernommen. Allerdings möchte ich die Einstellung während der Laufzeit je nach AC-Zustand ändern:

Wenn mein Laptop aufgeladen wird, verwenden Sie HandleLidSwitch=ignore. Wenn mein Laptop im Akkubetrieb läuft, verwenden Sie HandleLidSwitch=suspend.

Ist dies mit dem aktuellen Systemd irgendwie realisierbar?

Antwort1

logind bietet eineSperrsperreMechanismus, der es Benutzersoftware ermöglicht, die Systemrichtlinie außer Kraft zu setzen. So kann beispielsweise Gnome die Kontrolle über alle ACPI-Tasten und -Schalter übernehmen, solange diese aktiv sind. Sie können damit den „Griff-Deckel-Schalter“ sperren, wenn das Gerät eingesteckt ist, und die Sperre aufheben, wenn es ausgesteckt ist.

Der beste Ansatz wäre, ein Skript in einer Sprache mit DBus-Bindungen zu schreiben und die Inhibit()Methode von logind zu verwenden, aber systemd bietet einen systemd-inhibitBefehl, der von einem Shell-Skript aus verwendet werden kann. Beachten Sie, dass dieser als Wrapper verwendet werden soll und die Sperre aufrechterhält, bis der untergeordnete Prozess beendet wird:

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

PS: Dies alles setzt voraus, dass Sie keine Desktop-Umgebung verwenden, die bereits „Handle-Lid-Switch“ blockiert. Wenn Sie es systemd-inhibitohne Argumente ausführen, werden vorhandene Inhibitoren aufgelistet.

verwandte Informationen