如何获取 gnome 会话空闲时间?

如何获取 gnome 会话空闲时间?

在最近的 Ubuntu 中通过 dbus 获取会话空闲时间的方法是否发生了变化,或者这里的 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#gs-method-GetSessionIdleTime

答案1

这是一个老问题,但我正在寻找 Gnome3 的类似解决方案。仅在使用 Python 3.8.5 的 Ubuntu 20.04 上进行了测试。

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)

答案2

那是在 Gnome2 中,您提到的参考是针对 gnome-screensaver 版本 2.15.3。

甚至回到 Ubuntu 12.04,它包含版本 3.4.1!似乎已被删除。请查看较新的文档。

暗示:您可以使用d-feetD-Bus 查看器和调试器。查看/浏览所有正在运行的服务以及所有可用的方法、信号和属性。

相关内容