しばらくするとデスクトップのロックが機能しなくなるのはなぜですか?

しばらくするとデスクトップのロックが機能しなくなるのはなぜですか?

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 回は正常に動作することに注意してください。不明な時間またはイベントが発生した後にのみ、動作しなくなります。


私は持っているないこれを確実に再現することができた。つまり、私は自分のラップトップで以下のアプローチを試したが、どちらの場合もスクリーンセーバーのショートカット/コマンド実際にその後デスクトップをロックします:

  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-lockどちらも を使用していますかslock?上記の行に加えて、xautolockこれもあります.xprofile の行:

xss-lock slock &

xautolockとはどちらもxss-lockを呼び出すことができるためslock、問題は次のようになるのではないかと疑っています。

xss-lockノートパソコンのスリープ状態を検出できるので、 の代わりに使用したいのですが、では動作xautolockしないようです。xss-locknotify-send

答え1

私の場合、xautolock プロセスはバックグラウンドで実行されていましたが、xautolock -locknowコマンドをリッスンしていませんでした。@jrm が述べたように、アプリケーションが「スクリーンセーバー」を抑制している必要がありますどちらの場合も、これは mpv (ビデオ プレーヤー) がスクリーン セーバーを無効にしていたために発生しました。

~/.config/mpv/configmpv の場合、修正するには、またはに以下を追加します~/.mpv/config

stop-screensaver=no

mpv を使用していない場合は、スクリーンセーバーを無効にしている別のアプリケーションである可能性があります。よく使用されるアプリケーションをいくつか試して、どれが原因か確認してください。


あなたがしたい場合はビデオ再生中の自動画面ロックを防ぐ一般的な方法の 1 つは、xautolock の「コーナー」機能を使用することです。

xautolock -corners 000- -cornersize 30

上記のコマンドを使用すると、マウス カーソルを画面の右下隅 (半径 30 ピクセル以内) に置くと、自動ロックが一時的に無効になります。


もう一つ試してみるとよい-resetsaverオプションは次の通りです:

xautolock -resetsaver

または-detectsleepオプション:

xautolock -detectsleep

答え2

xdg-screensaver lock動作していないときでも使用できる場合がありますxautolock -locknow

関連情報