diff options
author | bnewbold <bnewbold@robocracy.org> | 2016-06-12 14:05:03 -0400 |
---|---|---|
committer | bnewbold <bnewbold@robocracy.org> | 2016-06-12 14:05:07 -0400 |
commit | be5efed9f4c0a1532509f0f8d6051f583905662f (patch) | |
tree | 3313f470d144ec26978bacf90cbeaa23fdaf9396 | |
parent | 986029e65c732d735deff1441868151eb7d51fad (diff) | |
download | exuberant-hacks-be5efed9f4c0a1532509f0f8d6051f583905662f.tar.gz exuberant-hacks-be5efed9f4c0a1532509f0f8d6051f583905662f.zip |
add notes on xscreensaver pseudo-API
-rw-r--r-- | xscreensaver_notes.txt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/xscreensaver_notes.txt b/xscreensaver_notes.txt new file mode 100644 index 0000000..e8c7238 --- /dev/null +++ b/xscreensaver_notes.txt @@ -0,0 +1,35 @@ + +The API is basically to grab the window ID from $XSCREENSAVER_WINDOW (could be +hex or decimal) and draw to that. There are also the following command line +options: + + -root find the "root" window for this screen and draw in it + -window create an X window and draw in it + -window-id <arg> draw in the given window + -pair + +Also unclear how OpenGL-based hacks differ from Xlib-based hacks (in terms of +window selection). + +The code in glutin (rust) that creates a Window object is: + + https://github.com/tomaka/glutin/blob/master/src/api/x11/window.rs + glutin/src/api/x11/window.rs:421 + + // getting the root window + let root = unsafe { (display.xlib.XDefaultRootWindow)(display.display) }; + display.check_errors().expect("Failed to get root window"); + +The code in XScreensaver "hacks" that seems to latch on to an existing window is: + + https://github.com/Zygo/xscreensaver/blob/master2/hacks/screenhack.c#L872 + (possible section of xscreensaver hack code dealing with window stuff?) + +new plan: +- write a function that just returns a glutin::Window based on the remote X11 + window ID + +old plan: +- provide an impl on glutin::Window which constructs a new one given a root + window number; just copy/paste the new() implementation for now? + "from_existing()"? |