在运行时更改 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将列出现有的抑制剂。

相关内容