33 lines
669 B
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;
|
|
}
|