Dbus 억제제가 추가되었으나 즉시 제거됨

Dbus 억제제가 추가되었으나 즉시 제거됨

나는 다음을 통해 GUI 세션에 대한 억제제를 생성하는 것이 가능하다는 것을 배웠습니다.dbus. 그러나 억제제를 추가하려고 하면 즉시 제거됩니다. 여기에 예가 있습니다.

이 명령을 통해 억제제를 추가하기 위해 호출합니다(로그아웃이 발생하지 않도록 해야 함).

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)'

테스트와 관련된 것은 D-Bus 인터페이스 의 IsInhibited및 메소드입니다. 예:GetInhibitorsorg.gnome.SessionManager

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

억제제를 나열하는 방법은 다음을 참조하십시오.목록_억제제()내 용도로.

관련 정보