我正在尝试使用X11屏幕保护仪扩展客户端库来检测上一次用户输入以来的时间。我定期打电话给 XScreenSaverQueryInfo 为了获得空闲时间。我面临的问题是,在此通话报告的闲置时间每20-30秒后,即使在那个时候没有实际的用户输入,也会重置为0。我完全对此感到困惑。我唯一的领导是,如果我卸载,问题就会消失 gnome-screensaver. 。我的问题是,有 gnome-screensaver 出于某种原因模拟用户输入?我知道这听起来不太可能,如果确实如此,那绝对是一个错误 gnome-screensaver, ,但我现在想不出其他任何事情。有人知道我在哪里可以找到有关如何的更多信息 gnome-screensaver 作品以及它如何影响 XScreenSaverQueryInfo 致电而无需实际浏览代码。我已经浏览了信息 gnome-screensaver 但找不到与我的问题有关的任何内容。

更新: :我从DBUS-Monitor那里得到以下输出。我该如何解释:

method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity

我认为某个过程要求Gnome-Screensaver模拟使用。或者,Gnome-Screensaver是否向DBU发送模拟信号?如果这是第一个,我该如何找出哪个过程要求Gnome-Screensaver做到这一点?

有帮助吗?

解决方案

拥有DBUS发件人(如DBU-Monitor上所示)后,您可以做:

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:':1.97538'

插入实际发件人。这为您提供了发送消息的PID。

然后说PID是2144,您会这样做:

cat /proc/2144/cmdline

作为查看程序是什么的一种方法。

其他提示

程序(视频播放器在播放视频时这样做)可能会发送 gnome-screensaver-command --poke 命令将发送 SimulateUserActivity 事件重置空闲时间,以防止屏幕保护程序变得活跃。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top