qbreak/app/idle_tracking.cpp
2022-05-14 22:53:13 +03:00

37 lines
887 B
C++

#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>
#include <X11/extensions/scrnsaver.h> // This can require libxss-dev to be installed
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);
idle_time = (mit_info->idle);
XFree(mit_info);
XCloseDisplay(display);
return idle_time;
}
#endif