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)'
テストに関連するのはIsInhibited
D-Busインターフェースのメソッドです。たとえば、次のようになります。GetInhibitors
org.gnome.SessionManager
qdbus org.gnome.SessionManager /org/gnome/SessionManager \
org.gnome.SessionManager.IsInhibited 8
阻害剤をリストする方法の詳細については、を参照してください。リスト_抑制剤()私のユーティリティの一つから。