Dbus Inhibitor добавлен, но сразу же удален

Dbus Inhibitor добавлен, но сразу же удален

Я узнал, что можно создавать ингибиторы для сеанса графического интерфейса пользователя с помощью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)'

Для тестирования используются методы IsInhibitedи интерфейса D-Bus, например:GetInhibitorsorg.gnome.SessionManager

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

О том, как составить список ингибиторов, см.список_ингибиторов()в моем хозяйстве.

Связанный контент