该设置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
将列出现有的抑制剂。