mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-12-01 08:17:34 +00:00
49994a4c3e
* UTILITIES/x11idle.c (org-clock-idle-time): Added multiple checks to functions return values to prevent segfault. Also "fixed" return codes to fail unless the value could be printed, in which case the program succeeds. TINYCHANGE
33 lines
838 B
C
33 lines
838 B
C
#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
|
|
*/
|
|
main() {
|
|
Status querry = 0;
|
|
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, retrieve and print idle time
|
|
querry = XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
|
|
|
|
if (querry == 0) {
|
|
return -1;
|
|
}
|
|
|
|
//idle time was retrieved successfully, print it
|
|
printf("%u\n", info->idle);
|
|
return 0;
|
|
}
|
|
|