X11スクリーンセーバー拡張クライアントライブラリを使用して最後のユーザー入力から時間を検出しようとしています。私はアイドル時間を得るために定期的にXScreenSaverQueryInfo
を呼び出します。私が直面している問題は、20〜30秒ごとに、この呼び出しによって報告されたアイドル時間が0にリセットされることです。これは、その時間に実際のユーザー入力がなくても発生します。私はこれに完全に困惑しています。私が持っている唯一のリードは、gnome-screensaver
をアンインストールすると問題が消えるということです。私の質問は、gnome-screensaver
は何らかの理由でユーザの入力をシミュレートするのですか?私はそれが起こりそうにないと知っています、もしそうならば、それはもっとも間違いなくgnome-screensaver
のバグでしょうが、今は他の何かを考えることはできません。だれがgnome-screensaver
がどのように動作し、どのようにしてXScreenSaverQueryInfo
コールに影響を与えるかについての詳細な情報がどこにあるのか知っていますか? gnome-screensaver
homeに情報を伝えましたが、問題に関連するものが見つかりませんでした。Linuxで30秒後にユーザーのアイドル時間が0にリセットされる
更新:dbus-monitorから次の出力が得られました。
method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity
私はいくつかのプロセスがgnome-screensaverにSimulateUserActivityを要求していると思います。または、gnome-screensaverがSimulateUserActivityシグナルをdbusに送信していますか?最初の場合は、どのプロセスがgnome-screensaverにそれを要求しているかをどのように調べることができますか?
私はそれをしました。それは言う: エラーorg.freedesktop.DBus.Error.NameHasNoOwner:名前 ':1.ddddd'のPIDを取得できませんでした:そのような名前はありません ここで、1.dddddは実際の送信者です。 – 341008
は、何かを指し、SimulateUserActivityを送信してから、調査を行う前に切断します。おそらく上記のgnome-screensaver-command --pokeです。 gnome-screensaver-commandをシェルスクリプトに置き換えることの提案は興味深いものです。 –