I am trying to determine if the screen saver works or not.
Here is the code that I still have:
#include <stdio.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/extensions/scrnsaver.h> int main(int argc, char *argv[]) { XScreenSaverInfo info; Display *dpy = XOpenDisplay(NULL); if(NULL == dpy) { fprintf(stderr, "failed to open display\n"); return 1; } int a = 0; int b = 0; XScreenSaverQueryExtension(dpy, &a, &b); printf("%d %d\n", a, b); XScreenSaverQueryInfo(dpy, RootWindow(dpy, DefaultScreen(dpy)), &info); printf("%d %d %d %d\n", info.state, info.til_or_since, info.idle, info.kind); return 0; }
But info.state is always 3 (ScreenSaverDisabled). I checked this with xscreensaver and gnome-screensaver.
Here is an example output:
92 0 3 0 9903 0
The same with or without a screensaver (except, of course, info.idle).
Additional Information:
$ X -version X.Org X Server 1.13.0 Release Date: 2012-09-05 X Protocol Version 11, Revision 0
Window Manager: i3
Distribution: Arch Linux
EDIT: Using [this] [1] I created a version of xcb that also does not work. To eliminate errors in my testing procedure, here it is: For me, this code runs in an endless loop, while my xscreensaver runs in the background. And to actually activate the screensaver, I use the xscreensaver-command --activate command
source share