該設定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
將列出現有的抑制劑。