-
-
Save cleverca22/4c165e69f08aec185d4b2366e3b62303 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with import <nixpkgs> {}; | |
stdenv.mkDerivation { | |
name = "x11idle"; | |
installPhase = '' | |
mkdir -p $out/bin | |
gcc -lX11 -lXss ${./x11idle.c} -o $out/bin/x11idle | |
''; | |
buildInputs = with xlibs; [ libXScrnSaver xproto libX11 ]; | |
unpackPhase = ":"; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <X11/extensions/scrnsaver.h> | |
#include <stdio.h> | |
/* Based on code from | |
* http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/ | |
* | |
* compile with 'gcc -l Xss x11idle.c -o x11idle' and copy x11idle into your | |
* path | |
*/ | |
int main() { | |
XScreenSaverInfo *info = XScreenSaverAllocInfo(); | |
//open the display specified by the DISPLAY environment variable | |
Display *display = XOpenDisplay(0); | |
//display could be null if there is no X server running | |
if (info == NULL || display == NULL) { | |
return -1; | |
} | |
//X11 is running, try to retrieve info | |
if (XScreenSaverQueryInfo(display, DefaultRootWindow(display), info) == 0) { | |
return -1; | |
} | |
//info was retrieved successfully, print idle time | |
printf("%lu\n", info->idle); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment