首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上30秒后将用户空闲时间重置为0。

在Linux上30秒后将用户空闲时间重置为0。
EN

Stack Overflow用户
提问于 2011-01-18 07:14:11
回答 2查看 2.3K关注 0票数 1

我正在尝试使用X11屏幕保护程序扩展客户端库来检测上次用户输入的时间。我定期打电话给XScreenSaverQueryInfo,以获得空闲时间。我面临的问题是,在每20-30秒之后,空闲时间,如此调用所报告的,重置为0。即使在这段时间内没有实际的用户输入,也会发生这种情况。我对此完全感到困惑。我唯一的线索是,如果卸载gnome-screensaver,问题就会消失。我的问题是,gnome-screensaver是否出于某种原因模拟用户输入?我知道这听起来不太可能,如果是的话,它肯定是gnome-screensaver的一个bug,但是现在我想不出任何其他的事情了。有谁知道我在哪里可以找到更多关于gnome-screensaver如何工作以及它如何影响XScreenSaverQueryInfo调用的信息,而不必真正地遍历代码。我在gnome-screensaver 首页查阅了相关信息,但没有发现任何与我的问题相关的信息。

更新:我从dbus-获得了以下输出。我如何理解这一点:

代码语言:javascript
复制
method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity

我认为有些过程是要求SimulateUserActivity的gnome屏幕保护程序。或者,gnome屏幕保护程序是否向dbus发送SimulateUserActivity信号?如果是第一个,我如何才能知道是哪个进程要求gnome-屏幕保护程序这样做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-18 16:32:53

一旦您有了dbus发件人(如dbus-监视器所示),您可以这样做:

代码语言:javascript
复制
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:':1.97538'

插入实际的发件人。这就给了你发送信息的pid。

然后假设pid是2144,您可以这样做:

代码语言:javascript
复制
cat /proc/2144/cmdline

作为看节目内容的一种方式。

票数 2
EN

Stack Overflow用户

发布于 2011-01-18 08:58:34

一个程序(视频播放器在播放视频时执行此操作)可能发送一个gnome-screensaver-command --poke命令,该命令将发送一个SimulateUserActivity事件来重置空闲时间,这将防止屏幕保护程序活动。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4721389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档