5

バックグラウンドで実行され、ユーザーがログアウトしたことを検出するスクリプトを作成したいと思います。dbus-monitorでドキュメントを見つけるのに問題があります。私ができる最善のことは、、、の急増を確認することですがEndSessionQueryEndSessionこれらEndSessionResponseはすべてブール値が付属しているため、完全に信頼することはできません(おそらく、プログラムはユーザーにログアウトを望まないと言っていますか?)そしてその上に、開いているプログラムがない場合はどうなりますか?これは信頼性が低すぎます。

私が欲しいのは、ユーザーがログアウトしているときに常に発生する信号をリッスンすることです。誰かがその信号を提供できますか?現在、私はこのコマンドを実行しています:

dbus-monitor --session \
    "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
        myprog

ScreenSaverイベントをキャッチします。しかし、私もログアウトをキャッチしたいと思います。私が望むのは次のようなものです。

dbus-monitor --session \
    "type='signal',interface='org.gnome.Session',member='LogoutSuccess'" \
    "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
        myprog
4

2 に答える 2

4

ここでorg.gnome.SessionManager。*というファイルを探します:http://git.gnome.org/browse/gnome-session/tree/gnome-session

インターフェイスorg.gnome.SessionManagerにSessionOverシグナルがあり、これが必要な場合があります。

セッションマネージャからの通常の「セッションが終了しています、終了するか、プロンプトなどを表示します」という要求を探していますか、それとも「セッションは本当に終了しています、さようなら」というシグナルを探していますか?

于 2013-02-21T18:40:21.167 に答える
2

これは古いスレッドですが、他の誰かが必要とする場合に備えて、いくつかの情報を追加しています。

私も同じニーズを持っていましたが、使いやすいスクリプトとして Session Manager DBus クライアントを実装することになりました。ログアウト時にユーザー定義のスクリプトを実行します。すぐに使用できるアプリケーションは GitHub で共有されています。

Gnome EndSession DBus クライアント

于 2015-02-20T19:33:48.887 に答える