![为什么桌面锁定在一段时间后停止工作?](https://linux22.com/image/76770/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%A1%8C%E9%9D%A2%E9%94%81%E5%AE%9A%E5%9C%A8%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%E5%81%9C%E6%AD%A2%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
$ 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
是什么赋予了?
到目前为止,我已经在台式机和笔记本电脑上看到了这一点。请注意,至少启动后第一次锁定工作正常。只有在一些未知的时间或事件之后,它才会开始失败。
我有不是能够可靠地重现这一点。也就是说,我在我的笔记本电脑上尝试了以下方法,并且在这两种情况下屏幕保护程序快捷方式/命令之后实际上锁定桌面:
- 盖上盖子
- 等待计算机进入休眠状态
- 打开盖子
- 按电源按钮
- 提供登录密码,然后输入Enter
和
- 锁定桌面
- 与上述步骤相同
追踪代码:
- 打印错误信息的行:
error1 ("Could not locate a running %s.\n", progName);
- 那个会发生如果
messageToSend
是真的和type != XA_INTEGER
看起来像
type
已设置在以下声明中:(void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False, AnyPropertyType, &type, &format, &nofItems, &after, (unsigned char**) &contents);
这是否意味着是否检测到跑步xautolock
可以取决于窗户那个是重点?我也想知道这个电话是否与此有关已知错误:
- -disable、-enable、-toggle、-exit、-locknow、-unlocknow 和 -restart 选项取决于对 X 服务器的访问来完成其工作。这意味着,如果其他应用程序为自己抢占了服务器,它们将被挂起。
是否有可能与两者都使用的xautolock
冲突?除了上面的行之外,我还有这个xss-lock
slock
xautolock
.xprofile 中的行:
xss-lock slock &
由于 和 都xautolock
可以xss-lock
调用slock
,我怀疑问题是这样的:
xautolock
slock
10 分钟不活动后运行。-
$ xset q | grep --after-context=2 --line-regexp --fixed-strings 'Screen Saver:' Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600
slock
实际上只生成了一个客户端。xss-lock
杀死错误slock
,导致xautolock
崩溃或放弃。
由于xss-lock
可以检测笔记本电脑的睡眠状态,我想用它代替xautolock
,但我似乎无法xss-lock
使用notify-send
。
答案1
对我来说,xautolock 进程仍在后台运行,但它没有监听任何xautolock -locknow
命令。正如@jrm提到的,应用程序必须抑制“屏幕保护程序”。对于我们俩来说,这是由于 mpv(视频播放器)禁用了屏幕保护程序。
对于 mpv,修复方法是将以下内容添加到~/.config/mpv/config
or ~/.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
不工作时您也可以使用。