123456789101112131415161718192021222324252627282930313233 |
- /* This header file is provided by the libxss-dev package on Debian,
- * by the libXss-devel rpm on openSUSE, and the libXScrnSaver-devel
- * rpm on Fedora.
- */
- #include <X11/extensions/scrnsaver.h>
- #include <stdio.h>
- /* Based on code from
- * http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/
- *
- * compile with 'gcc -l Xss x11idle.c -o x11idle' and copy x11idle into your
- * path
- */
- int main() {
- XScreenSaverInfo *info = XScreenSaverAllocInfo();
- //open the display specified by the DISPLAY environment variable
- Display *display = XOpenDisplay(0);
- //display could be null if there is no X server running
- if (info == NULL || display == NULL) {
- return -1;
- }
- //X11 is running, try to retrieve info
- if (XScreenSaverQueryInfo(display, DefaultRootWindow(display), info) == 0) {
- return -1;
- }
- //info was retrieved successfully, print idle time
- printf("%lu\n", info->idle);
- return 0;
- }
|