为什么桌面锁定在一段时间后停止工作?

为什么桌面锁定在一段时间后停止工作?

xautolock显然正在运行:

$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock

然而,当我尝试锁定它:

$ xautolock -locknow
Could not locate a running xautolock.

如果我启动另一个xautolock它会起作用:

$ xautolock -time 10 -notify 30 -notifier "notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds'" -locker slock&
[2] 18828
$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
user   18828  0.0  0.0  20124  2708 pts/1    S    08:30   0:00      \_ xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
$ xautolock -locknow # Runs fine and locks the desktop

是什么赋予了?

到目前为止,我已经在台式机和笔记本电脑上看到了这一点。请注意,至少启动后第一次锁定工作正常。只有在一些未知的时间或事件之后,它才会开始失败。


我有不是能够可靠地重现这一点。也就是说,我在我的笔记本电脑上尝试了以下方法,并且在这两种情况下屏幕保护程序快捷方式/命令之后实际上锁定桌面:

  1. 盖上盖子
  2. 等待计算机进入休眠状态
  3. 打开盖子
  4. 按电源按钮
  5. 提供登录密码,然后输入Enter

  1. 锁定桌面
  2. 与上述步骤相同

追踪代码:

  1. 打印错误信息的行:error1 ("Could not locate a running %s.\n", progName);
  2. 那个会发生如果messageToSend是真的type != XA_INTEGER
  3. 看起来像type已设置在以下声明中:

    (void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False,
                               AnyPropertyType, &type, &format,
                               &nofItems, &after,
                               (unsigned char**) &contents);
    

这是否意味着是否检测到跑步xautolock可以取决于窗户那个是重点?我也想知道这个电话是否与此有关已知错误:

  1. -disable、-enable、-toggle、-exit、-locknow、-unlocknow 和 -restart 选项取决于对 X 服务器的访问来完成其工作。这意味着,如果其他应用程序为自己抢占了服务器,它们将被挂起。

是否有可能与两者都使用的xautolock冲突?除了上面的行之外,我还有这个xss-lockslockxautolock.xprofile 中的行:

xss-lock slock &

由于 和 都xautolock可以xss-lock调用slock,我怀疑问题是这样的:

由于xss-lock可以检测笔记本电脑的睡眠状态,我想用它代替xautolock,但我似乎无法xss-lock使用notify-send

答案1

对我来说,xautolock 进程仍在后台运行,但它没有监听任何xautolock -locknow命令。正如@jrm提到的,应用程序必须抑制“屏幕保护程序”。对于我们俩来说,这是由于 mpv(视频播放器)禁用了屏幕保护程序。

对于 mpv,修复方法是将以下内容添加到~/.config/mpv/configor ~/.mpv/config

stop-screensaver=no

如果您不使用 mpv,则可能是另一个应用程序禁用了屏幕保护程序。尝试一些常用的,看看是哪一种。


如果你想防止视频播放期间自动锁定屏幕,一种常见的方法是使用 xautolock 的“corners”功能:

xautolock -corners 000- -cornersize 30

使用上述命令,如果将鼠标光标放在屏幕右下角(30px半径内),自动锁定将暂时禁用。


还有一件事要尝试的是-resetsaver选项:

xautolock -resetsaver

或者-detectsleep选项:

xautolock -detectsleep

答案2

xdg-screensaver lock即使xautolock -locknow不工作时您也可以使用。

相关内容