![Dbus 억제제를 추가하되 즉시 제거하십시오.](https://linux55.com/image/95058/Dbus%20%EC%96%B5%EC%A0%9C%EC%A0%9C%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%90%98%20%EC%A6%89%EC%8B%9C%20%EC%A0%9C%EA%B1%B0%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
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
억제제를 나열하는 방법에 대한 자세한 내용은 을 참조하십시오.목록_억제제()내 유틸리티 중 하나에서.