Dbus阻害剤を追加しますが、すぐに削除してください。

Dbus阻害剤を追加しますが、すぐに削除してください。

GUIセッションの阻害剤を次のように作成できることを学びました。バス。しかし、阻害剤を追加しようとするとすぐに削除されます。ここに例があります。

次のコマンド呼び出しを介して抑制装置(ログアウトが発生しないようにする必要があります)を追加します。

qdbus org.gnome.SessionManager  /org/gnome/SessionManager org.gnome.SessionManager.Inhibit "x-terminal-emulator" $(xdotool getactivewindow) "TEST REASON" 1

出力にはdbus-monitor追加されたがすぐに削除されたとマークされます。

$ dbus-monitor --profile | grep -i inhibitor
sig 1474613346.596581   156 :1.23   <none>  /org/gnome/SessionManager   org.gnome.SessionManager    InhibitorAdded
sig 1474613346.603137   159 :1.23   <none>  /org/gnome/SessionManager   org.gnome.SessionManager    InhibitorRemoved

この問題をどのように解決できますか?

使用済みシステム: Ubuntu 16.04, Unity

ベストアンサー1

インヒビターは、dbus クライアントの接続が切断されると自動的に削除されるため、すぐに削除されます。

したがって、抑制が適用されている間はクライアントを実行し続ける必要があります。

例:

python3 -c 'import pydbus; pydbus.SessionBus().get(
"org.gnome.SessionManager").Inhibit("what", 0, "why", 1);
import time; time.sleep(2**32-1)'

テストに関連するのはIsInhibitedD-Busインターフェースのメソッドです。たとえば、次のようになります。GetInhibitorsorg.gnome.SessionManager

qdbus org.gnome.SessionManager /org/gnome/SessionManager \
    org.gnome.SessionManager.IsInhibited 8

阻害剤をリストする方法の詳細については、を参照してください。リスト_抑制剤()私のユーティリティの一つから。

おすすめ記事