在Linux上30秒后,用户空闲时间重置为0
-
12-10-2019 - |
题
我正在尝试使用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
事件重置空闲时间,以防止屏幕保护程序变得活跃。