diff options
author | toni <matzeton@googlemail.com> | 2017-01-11 01:07:23 +0100 |
---|---|---|
committer | toni <matzeton@googlemail.com> | 2017-01-11 01:28:42 +0100 |
commit | d039eca8d4269333fb103042b37b15138ddcadfc (patch) | |
tree | b713320339fc77c2dbc42b1c253bc38a7f22d454 /xidle.c |
initial commit
Diffstat (limited to 'xidle.c')
-rw-r--r-- | xidle.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ +#include <stdio.h> +#include <stdbool.h> +#include <X11/Xlib.h> +#include <X11/extensions/scrnsaver.h> + + +/* Report amount of X server idle time. */ +/* gcc xidle.c -o xidle -lX11 -lXext -lXss */ + +int main(int argc, char *argv[]) +{ + Display *display; + int event_base, error_base; + XScreenSaverInfo info; + float seconds; + unsigned int d_seconds = 0; + + if (argc == 2) { + d_seconds = atoi(argv[1]); + } + + display = XOpenDisplay(""); + if (!display) + return -1; + + if (XScreenSaverQueryExtension(display, &event_base, &error_base) == true) { + if (XScreenSaverQueryInfo(display, DefaultRootWindow(display), &info) != true) { + fprintf(stderr, "Error: XScreenSaver QueryInfo failed\n"); + return -1; + } + seconds = (float)info.idle/1000.0f; + if ( d_seconds > 0 ) { + if (d_seconds <= (unsigned int) seconds) { + return 1; + } + } else { + printf("%f\n",seconds); + } + return 0; + } else { + fprintf(stderr,"Error: XScreenSaver Extension not present\n"); + return -1; + } +} + |