X11 xscreensaver如何知道我已经闲置了多久(xprintidle无用)

时间:2012-08-09 16:18:51

标签: x11

如果我xset dpms 600 3600 7200,它会在10点后空白我的屏幕 几分钟不活动。

问题

  • X11如何知道我闲置多久,以及如何访问它 空闲时间以编程方式?
  • 我无法安装xprintidle,可能是因为X11不再 有XIDLE扩展名?

谷歌搜索建议查看“man xscreensaver”,但我找不到 那里有用的东西。

1 个答案:

答案 0 :(得分:9)

Screen saver扩展,QueryInfo请求。如果你正在使用xlib - 它在XScreenSaverQueryInfo(与Xss链接)

JavaScript中的示例,使用node-x11

var x11 = require('x11');
x11.createClient(function(err, display) {
    var X = display.client;
    X.require('screen-saver', function(err, SS) {
        SS.QueryInfo(display.screen[0].root, function(err, info) {
            console.log('Idle time', info.idle);
        });
    });
    X.on('error', console.error);
});

c中的例子:

#include <X11/extensions/scrnsaver.h>
#include <stdio.h>

int main() {
    Display *display = XOpenDisplay(0);
    if (display != 0) {
      XScreenSaverInfo *info = XScreenSaverAllocInfo();
      XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
      if (info)
      {
        printf("%lu\n", info->idle);
        XFree(info);
        return 0;
      }
      return -1;
    }
    return -1;
}