web-dev-qa-db-ja.com

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

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
_

何ができますか?

これまでに、デスクトップとラップトップの両方でこれを見てきました。少なくともブート後の最初のロックは正常に機能することに注意してください。それが失敗し始めるのは、いくつかの未知の時間またはイベントの後だけです。


私はこれを確実に再現することができましたnot。つまり、私は私のラップトップで次のアプローチを試しました、そしてどちらの場合も screensaver shortcut/command は実際に後でデスクトップをロックします:

  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 is set のようになります。

    _(void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False,
                               AnyPropertyType, &type, &format,
                               &nofItems, &after,
                               (unsigned char**) &contents);
    _

これは、実行中のxautolockが検出されるかどうかが、フォーカスされているwindowに依存する可能性があることを意味しますか?この呼び出しがこれに関連している可能性があるかどうかも疑問に思っています 既知のバグ

  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-lock_を_notify-send_で機能させることができません。

14
l0b0

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

Mpvの場合、修正は以下を~/.config/mpv/configまたは~/.mpv/configに追加することです。

stop-screensaver=no

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


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

xautolock -corners 000- -cornersize 30

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


もう1つ試すことは、-resetsaverオプションです。

xautolock -resetsaver

または-detectsleepオプション:

xautolock -detectsleep
5
Mateen Ulhaq