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

억제제를 나열하는 방법에 대한 자세한 내용은 을 참조하십시오.목록_억제제()내 유틸리티 중 하나에서.

관련 정보