我想在键盘灯闲置一段时间后自动调暗键盘灯。如何检测不活动时间?顺便说一句,我使用 archlinux。
答案1
在基于 Debian 的系统上,有一个xprintidle
命令xprintidle
命令(来自https://github.com/g0hl1n/xprintidle/)在标准输出上打印空闲时间(以毫秒为单位)。
$ sleep 2; xprintidle
1925
如果你ltrace
这样做,你会看到它使用XScreenSaverQueryExtension()
,XScreenSaverQueryInfo()
API 就像其他答案一样还为某些服务器的极端情况下的特定问题添加了一些解决方法。
答案2
编译并运行它会得到以毫秒为单位的空闲时间
#include <X11/extensions/scrnsaver.h>
#include <stdio.h>
int main(void) {
Display *dpy = XOpenDisplay(NULL);
if (!dpy) {
return(1);
}
XScreenSaverInfo *info = XScreenSaverAllocInfo();
XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
printf("%u\n", info->idle);
return(0);
}
答案3
这也在 C 中(使用 Makefile)实现,位于https://github.com/mjml/xidle。
它将为 shell 脚本提供小时、分钟、秒和毫秒的空闲时间,并通过可选开关选择单位/面值。