為什麼桌面鎖定在一段時間後停止工作?

為什麼桌面鎖定在一段時間後停止工作?

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不工作時您也可以使用。

相關內容