Как контролировать блокировку / разблокировку экрана в Ubuntu 14.04

Мне нужно реализовать функцию, которая контролирует блокировку / разблокировку экрана. Я сослался на следующую статью:
Запустить скрипт на блокировку / разблокировку экрана

Мой код сценария python отлично работает в Ubuntu 12.04, но он не работает в Ubuntu 14.04:

#!/usr/bin/env python import gobject import dbus from dbus.mainloop.glib import DBusGMainLoop def filter_cb(bus, message): if message.get_member() != "ActiveChanged": return args = message.get_args_list() if args[0] == True: print("Lock Screen") else: print("Unlock Screen") DBusGMainLoop(set_as_default=True) bus = dbus.SessionBus() bus.add_match_string("type='signal',interface='org.gnome.ScreenSaver'") bus.add_message_filter(filter_cb) mainloop = gobject.MainLoop() mainloop.run() 

Я также попробовал команду:

 dbus-monitor --session "interface='org.gnome.ScreenSaver'" 

Он ничего не выводит, когда я блокирую / разблокирую экран вручную.

Как я могу контролировать блокировку / разблокировку экрана в Ubuntu 14.04?

2 Solutions collect form web for “Как контролировать блокировку / разблокировку экрана в Ubuntu 14.04”

Ты прав. Поэтому, чтобы иметь правильный ответ, я изменил ваш код на рабочий (по крайней мере, под Ubuntu 15.10, Unify):

 #!/usr/bin/env python import gobject import dbus from dbus.mainloop.glib import DBusGMainLoop def filter_cb(bus, message): if message.get_member() != "EventEmitted": return args = message.get_args_list() if args[0] == "desktop-lock": print("Lock Screen") elif args[0] == "desktop-unlock": print("Unlock Screen") DBusGMainLoop(set_as_default=True) bus = dbus.SessionBus() bus.add_match_string("type='signal',interface='com.ubuntu.Upstart0_6'") bus.add_message_filter(filter_cb) mainloop = gobject.MainLoop() mainloop.run() 

Я думаю, что нашел ответ:
На Ubuntu 14.014 я должен отслеживать интерфейс «com.ubuntu.Upstart0_6» вместо «org.gnome.ScreenSaver».

  • Linux будет загружаться только на ноутбуке, где он был установлен
  • Проблема установки Okular из ppa под Ubuntu
  • LXC mount CIFS => разрешено отклонение
  • Может ли apt-get очистить с помощью apt?
  • Удалите функцию зашифрованного LVM, чтобы удалить введенный запрос пароля во время загрузки Ubuntu
  • Как пользователь демона может подключиться через SSH?
  • Загрузите файл с любой из двух машин с помощью SCP?
  • Не работает системный вызов «открытый» режим
  • org.eclipse.swt.SWTError: больше ручек во время запуска eclipse на ubuntu
  • Настройка журнала на Ubuntu Linux
  • Использование только 3,3 ГБ, но у меня 8 ГБ оперативной памяти даже на Ubuntu 14.04 64bit
  • Interesting Posts

    вращать элемент массива в сценарии оболочки

    Поиск приложения GUI для ввода команд Linux

    Проблема с использованием списков контроля доступа для новых пользователей, например (папка, созданная в skel directoy, имеет набор acl, она должна применяться к новым пользователям)

    Что означает chmod?

    как узнать, где находится файл конфигурации для apt?

    находить файлы в папке более новые, чем

    Давайте зашифруем ошибку обновления

    Ubuntu email: неправильное (и неожиданное) сопоставление постфикса

    grc: Выделите группы захвата только?

    SSH-Config – Есть ли способ определить, локальный или удаленный?

    Установка Brother DCP-195C на чашки

    Как перейти к следующему или предыдущему слову с помощью клавиш CTRL + со стрелками в консоли?

    Окно медленно меняет размер и замерзает с помощью compton, openbox и катализатора-hoo

    realmd – Разрешить группу AD

    Как с помощью двухголовой системы, как я могу заставить размещение окна на определенный рабочий стол?

    Linux и Unix - лучшая ОС в мире.