在運行時更改 systemd HandleLidSwitch 設定?

在運行時更改 systemd HandleLidSwitch 設定?

該設定HandleLidSwitch定義/etc/systemd/logind.conf如下:

HandleLidSwitch=<hibernate,ignore,...>

該設定在啟動時成功應用。但是,我想在運行時根據交流狀態更改設定:

如果我的筆記型電腦正在充電,請使用HandleLidSwitch=ignore.如果我的筆記型電腦使用電池,請使用 HandleLidSwitch=suspend.

這是否可以用目前的 systemd 來實現?

答案1

登入提供了一個抑制器鎖允許使用者軟體覆蓋系統策略的機制。例如,只要 Gnome 處於活動狀態,它就允許 Gnome 控制所有 ACPI 按鈕和開關。您可以使用它在設備插入時抑制“手柄蓋開關”,並在拔出插頭時釋放鎖。

最好的方法是用具有 DBus 綁定的語言編寫腳本並使用 logind 的Inhibit()方法,但 systemd 確實提供了systemd-inhibit可以從 shell 腳本使用的命令。請注意,它旨在用作包裝器,保持鎖定直到子進程退出:

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

PS 這一切都假設您沒有使用已經封鎖「handle-lid-switch」的桌面環境。不帶參數運行systemd-inhibit將列出現有的抑制劑。

相關內容