2022-05-12 19:48:18 +03:00
|
|
|
#include "idle_tracking.h"
|
|
|
|
|
#include "settings.h"
|
|
|
|
|
#if defined(TARGET_LINUX)
|
|
|
|
|
|
|
|
|
|
// Thanks to https://stackoverflow.com/questions/222606/detecting-keyboard-mouse-activity-in-linux
|
|
|
|
|
|
|
|
|
|
#include <time.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
#include <X11/Xlib.h>
|
|
|
|
|
#include <X11/Xutil.h>
|
2022-05-13 08:25:15 +03:00
|
|
|
#include <X11/extensions/scrnsaver.h> // This can require libxss-dev to be installed
|
2022-05-12 19:48:18 +03:00
|
|
|
|
|
|
|
|
int get_idle_time()
|
|
|
|
|
{
|
|
|
|
|
time_t idle_time;
|
|
|
|
|
static XScreenSaverInfo *mit_info;
|
|
|
|
|
Display *display;
|
|
|
|
|
int screen;
|
|
|
|
|
|
|
|
|
|
mit_info = XScreenSaverAllocInfo();
|
|
|
|
|
if ((display = XOpenDisplay(NULL)) == NULL) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
screen = DefaultScreen(display);
|
|
|
|
|
XScreenSaverQueryInfo(display, RootWindow(display, screen), mit_info);
|
2022-05-14 22:53:13 +03:00
|
|
|
idle_time = (mit_info->idle);
|
2022-05-12 19:48:18 +03:00
|
|
|
XFree(mit_info);
|
|
|
|
|
XCloseDisplay(display);
|
|
|
|
|
|
|
|
|
|
return idle_time;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|