aboutsummaryrefslogtreecommitdiffstats
path: root/doc/xscreensaver_notes.txt
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2016-06-12 21:52:27 -0400
committerbnewbold <bnewbold@robocracy.org>2016-06-12 21:52:39 -0400
commitb0ffd78e6ec79d8749066eb176766a443fd63fca (patch)
tree6327bc34058d194752c787656180ef6bb6e9e085 /doc/xscreensaver_notes.txt
parent730796a80d0eca520713c20971958e778ee06b67 (diff)
downloadexuberant-hacks-b0ffd78e6ec79d8749066eb176766a443fd63fca.tar.gz
exuberant-hacks-b0ffd78e6ec79d8749066eb176766a443fd63fca.zip
doc: move xscreensaver_notes, and small update
Diffstat (limited to 'doc/xscreensaver_notes.txt')
-rw-r--r--doc/xscreensaver_notes.txt30
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/xscreensaver_notes.txt b/doc/xscreensaver_notes.txt
new file mode 100644
index 0000000..2c91ddc
--- /dev/null
+++ b/doc/xscreensaver_notes.txt
@@ -0,0 +1,30 @@
+
+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?)
+
+After figuring all this out, I found a perl equivalent:
+http://search.cpan.org/dist/OpenGL-XScreenSaver/lib/OpenGL/XScreenSaver.pm
+