From 4ef0764c566390870a8de1a9f1955f0b7a1f7b07 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 3 Jun 2019 13:41:16 +0200 Subject: reset to "chooser" page on inactivity defaults to 30s unless configuration option "session-chooser-reset-timer" (in seconds) is set --- src/x11util.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/x11util.cpp') diff --git a/src/x11util.cpp b/src/x11util.cpp index d2c1229..ce9192c 100644 --- a/src/x11util.cpp +++ b/src/x11util.cpp @@ -3,6 +3,7 @@ extern "C" { #include #include #include + #include } #include #include @@ -71,3 +72,29 @@ unsigned int getKeyMask(Display *dpy) XkbGetIndicatorState(dpy, XkbUseCoreKbd, &n); return n; } + +extern "C" +unsigned long getIdleTime(Display *dpy) +{ + if (dpy == nullptr) + return 0; + int event_basep, error_basep; + XScreenSaverInfo *ssi = nullptr; + if (!XScreenSaverQueryExtension(dpy, &event_basep, &error_basep)) { + fprintf(stderr, "Screen saver extension not supported\n"); + return 0; + } + ssi = XScreenSaverAllocInfo(); + if (ssi == nullptr) { + fprintf(stderr, "Couldn't allocate screen saver info\n"); + } + + if (!XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), ssi)) { + fprintf(stderr, "Couldn't query screen saver info\n"); + return 0; + } + unsigned long idleTime = ssi->idle; + if (ssi != nullptr) + XFree(ssi); + return idleTime; +} -- cgit v1.2.3-55-g7522