Как получить сессию гнома простой?
Изменился ли метод, позволяющий получить время простоя сеанса через dbus в недавней Ubuntu, или мой код dbus здесь неправильный?
#!/usr/bin/env python
import dbus
bus_name = 'org.gnome.ScreenSaver'
obj_path = '/org/gnome/ScreenSaver'
session_bus = dbus.SessionBus()
gs_obj = session_bus.get_object(bus_name, obj_path)
gs_iface = dbus.Interface(gs_obj, bus_name)
print gs_iface.GetSessionIdleTime()
# dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: No such method 'GetSessionIdleTime'
Ссылка:
https://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
2 ответа
Это старый вопрос, но я искал похожее решение для Gnome3. Проверено только на Ubuntu 20.04 с Python 3.8.5.
import dbus
session_bus = dbus.SessionBus()
bus_object = session_bus.get_object('org.gnome.Mutter.IdleMonitor', '/org/gnome/Mutter/IdleMonitor/Core')
bus_interface = dbus.Interface(bus_object, 'org.gnome.Mutter.IdleMonitor')
print(bus_interface.GetIdletime() / 1000)
Это было в Gnome2, ссылка, которую вы упомянули, относится к gnome-screensaver версии 2.15.3.
Даже если вернуться к Ubuntu 12.04, он содержит версию 3.4.1! Кажется, это было удалено. Проверьте новый документ.
Подсказка: вы можете использовать d-feet
просмотрщик D-Bus и отладчик. Для просмотра / просмотра всех запущенных сервисов и всех доступных методов, сигналов и свойств.