為什麼桌面鎖定在一段時間後停止工作?
$ 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
?除了上面的行之外,我在 .xprofile 中xautolock
也有這一行:xss-lock slock &
由於
xautolock
andxss-lock
can callslock
,我懷疑問題是這樣的:$ 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
。
對我來說,xautolock 程序仍在後台執行,但它沒有聽任何
xautolock -locknow
命令。正如@jrm 所提到的,應用程序必須抑制“螢幕保護程序”。對於我們倆來說,這是由於 mpv(影片播放器)禁用了螢幕保護程序。對於 mpv,修復方法是將以下內容添加到
~/.config/mpv/config
or~/.mpv/config
:stop-screensaver=no
如果您不使用 mpv,則可能是另一個應用程序禁用了螢幕保護程序。嘗試一些常用的,看看它是哪一個。
如果要防止影片播放過程中自動鎖屏,一種常見的方法是使用 xautolock 的“角落”功能:
xautolock -corners 000- -cornersize 30
使用上述命令,如果您將滑鼠游標放在螢幕的右下角(30px 半徑內),自動鎖定將暫時禁用。
要嘗試的另一件事是
-resetsaver
選項:xautolock -resetsaver
或
-detectsleep
選項:xautolock -detectsleep