csleeptimer/idle.c

33 lines
669 B
C

#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/extensions/scrnsaver.h>
/* Get the idle time from the X Screen Saver extionsion.
*
* Returns:
* long: Idle time in milliseconds
*/
Display *xorgDisplay;
XScreenSaverInfo *xorgScreensaverInfo;
unsigned long getIdleTime(void) {
unsigned long idle = 0;
if (NULL == xorgDisplay) {
xorgDisplay = XOpenDisplay(NULL);
}
if (!xorgDisplay) {
return idle;
}
if (NULL == xorgScreensaverInfo) {
xorgScreensaverInfo = XScreenSaverAllocInfo();
}
XScreenSaverQueryInfo(xorgDisplay, DefaultRootWindow(xorgDisplay), xorgScreensaverInfo);
idle = xorgScreensaverInfo->idle;
return idle;
}