l0b*_*0b0 16 arch-linux xorg awesome 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
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试锁定它时:
$ xautolock -locknow
Could not locate a running xautolock.
Run Code Online (Sandbox Code Playgroud)
如果我启动另一个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
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
到目前为止,我已经在台式机和笔记本电脑上看到了这一点。请注意,至少在启动锁定后的第一次工作正常。只有在某个未知时间或事件之后,它才开始失败。
我已经不能够可靠地再现这一点。也就是说,我在我的笔记本电脑上尝试了以下方法,在这两种情况下,屏幕保护程序快捷方式/命令实际上都会在之后锁定桌面:
和
跟踪代码:
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);
Run Code Online (Sandbox Code Playgroud)这是否意味着是否xautolock
检测到运行可以取决于聚焦的窗口?我还想知道此调用是否与此已知错误有关:
- -disable、-enable、-toggle、-exit、-locknow、-unlocknow 和 -restart 选项依赖于对 X 服务器的访问来完成它们的工作。这意味着它们将被挂起,以防其他应用程序为自己占用了服务器。
是否可能与xautolock
发生冲突xss-lock
,两者都在使用slock
?除了xautolock
上面的行,我在 .xprofile 中还有这一行:
xss-lock slock &
Run Code Online (Sandbox Code Playgroud)
由于两个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
Run Code Online (Sandbox Code Playgroud)slock
实际上只生成了一个客户端。xss-lock
杀死错误slock
,导致xautolock
崩溃或放弃。由于xss-lock
可以检测笔记本电脑睡眠,我想用它代替xautolock
,但我似乎无法xss-lock
使用notify-send
.
对我来说,xautolock 进程仍在后台运行,但它没有监听任何xautolock -locknow
命令。正如@jrm 所提到的,应用程序必须抑制“屏幕保护程序”。对于我们俩来说,这是由于 mpv(视频播放器)禁用了屏幕保护程序。
对于 mpv,修复方法是将以下内容添加到~/.config/mpv/config
or ~/.mpv/config
:
stop-screensaver=no
Run Code Online (Sandbox Code Playgroud)
如果您不使用 mpv,则可能是另一个禁用屏幕保护程序的应用程序。尝试一些常用的,看看它是哪一种。
如果要防止视频播放过程中自动锁屏,一种常用的方法是使用 xautolock 的“角落”功能:
xautolock -corners 000- -cornersize 30
Run Code Online (Sandbox Code Playgroud)
使用上述命令,如果您将鼠标光标放在屏幕右下角(半径 30 像素内),自动锁定将被暂时禁用。
要尝试的另一件事是以下-resetsaver
选项:
xautolock -resetsaver
Run Code Online (Sandbox Code Playgroud)
或-detectsleep
选项:
xautolock -detectsleep
Run Code Online (Sandbox Code Playgroud)