Die Einstellung ist wie folgt HandleLidSwitch
definiert :/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-inhibit
Befehl, 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-inhibit
ohne Argumente ausführen, werden vorhandene Inhibitoren aufgelistet.