确保我的桌面进入睡眠模式时被锁定

确保我的桌面进入睡眠模式时被锁定

有没有办法安装某种钩子来确保xlock或在我的笔记本电脑进入睡眠状态之前调用类似的程序,而不管请求的来源(pm-suspend从脚本调用,或者只是关闭盖子等)和我当前正在使用的窗口管理器?

(我目前正在使用 Debian Linux,但我想会有一个与发行版无关的解决方案。)

答案1

不,因为内核在冻结所有进程之前不提供任何类型的“进入睡眠”信号,所以没有与分布无关的方法来检测它。

话虽如此,几乎全部暂停请求(包括 lid-close)往往会经过几个用户空间 API:最终,它们要么Suspend()通过 D-Bus 调用 systemd-logind 函数,要么生成pm-suspend命令。两者都有各种可用于此目的的“钩子”。

(请注意,无论您做什么,直接操作echo mem > /sys/power/state对于用户空间来说几乎是不可见的,只需观察突然的时钟跳跃......)

因此,如果你使用systemd作为初始化:

  1. 安装xss-lock并使您的桌面环境在登录时启动它(通过~/.xinitrc、通过~/.config/autostart/或通过其他方式):

    xss-lock xlock &

    这将处理 systemd 的预暂停通知,以及loginctl lock-sessions您需要的手动调用。

  2. 在以下位置创建 pm-utils 钩子脚本/etc/pm/sleep.d/50lock

    /bin/sh #!/bin/sh 复制代码
    loginctl 锁定会话

    (不要忘记chmod +x。)您不需要此功能来进行常规的 systemd 暂停,但每当您手动运行时,它都会向 xss-lock 发送通知pm-suspend

如果你正在使用其他 init 系统:

如果你正在使用pm-suspend,我想你可以运行xlock 直接地来自 pm/sleep.d 钩子脚本。这需要您直接设置DISPLAY环境XAUTHORITY变量,这有点糟糕,因为它们在每次启动时可能会有所不同(尽管有些人:0在那里进行硬编码...)

总的来说,在这种情况下,特定于桌面环境的方法可能会更好。

相关内容