bc6809766612b7a306548cb0776862fec1f99f51
[xscreensaver] / README
1
2                               XScreenSaver
3
4             a screen saver and locker for the X window system
5                             by Jamie Zawinski
6
7 To build on Unix:
8
9   -  ./configure
10   -  make
11   -  make install
12
13 The `configure' shell script will attempt to figure out which options are
14 appropriate for your system, and will create config.h and the various
15 Makefiles for you.  Run `configure --help' to see how to override these
16 choices, or to specify things like the default installation directory.
17 The file `INSTALL' gives a general overview of use of these sorts of
18 configure scripts (those generated by the GNU autoconf system.)
19 The most important hint is probably this:
20
21    ./configure --includedir=/opt/Motif/include --libdir=/opt/Motif/lib
22
23 To build on VMS, see README.VMS.
24
25 If you think you've found a bug, please let me know; but first, read
26 the enlosed `README.debugging' file to find out what kind of information
27 would be most helpful to include in your bug report.
28
29                               ============
30
31 The xscreensaver program waits until the keyboard and mouse have been idle
32 for a period, and then runs a graphics demo chosen at random.  It turns off
33 as soon as there is any mouse or keyboard activity.
34
35 The purpose of xscreensaver is to display pretty pictures on your screen 
36 when it is not in use, in keeping with the philosophy that unattended 
37 monitors should always be doing something interesting, just like they do 
38 in the movies.
39
40 However, xscreensaver can also be used as a screen locker, to prevent
41 others from using your terminal while your are away.
42
43 The benefit that this program has over the combination of the xlock and
44 xautolock programs is the ease with which new graphics hacks can be
45 installed: you don't need to recompile this program to add a new display
46 mode, you just change some resource settings.  Any program which can be
47 invoked in such a way that it draws on the root window of the screen can
48 now be used as a screensaver without modification.  The programs that
49 are being run as screensavers don't need to have any special knowledge
50 about what it means to be a screensaver.
51
52 The XIDLE, MIT-SCREEN-SAVER, and/or SGI SCREEN_SAVER server extensions
53 will be used if you have them.
54
55 The dialog boxes (for locking and demo-mode) look best using Motif, but
56 can be configured to use Athena widgets instead.
57
58 Also included are several graphics hacks for use as screensavers.  There's
59 nothing magic about these: they're just programs that draw on the root
60 window, which are pointed at by the screensaver's default resource settings.
61
62    qix          - My own implementation of this, with many more options
63                   than you would have thought qix could have.
64    helix        - Generates spirally "stringart" patterns.
65    pedal        - Draws a different kind of spirally pattern.
66    rorschach    - Random inkblot patterns.
67    attraction   - A bouncing ball demo, or a qix-like demo, or a wild
68                   color-cycling thing, with some odd rules.
69    greynetic    - Random colored/stippled rectangles.
70    rocks        - Flying through an asteroid field.
71    blitspin     - Rotate a bitmap using bitblts.
72    imsmap       - Generates random maps or cloud formations.
73    hypercube    - 2d projection of a hypercube rotating on all four axes.
74    slidescreen  - Divides the screen into a grid and plays a 16-puzzle on it.
75    decayscreen  - A melting effect.
76    jigsaw       - Turns the screen into a jigsaw puzzle and shuffles it.
77    halo         - Random circular patterns.
78    pyro         - Fireworks.  Looks a lot like the version in xlock.
79    hopalong     - Fractals.  I snarfed this code from xlock.
80    flame        - Fractals.  Also from xlock.
81    noseguy      - A guy with a big nose wanders around the screen saying
82                   things.  I snarfed this code from xnlock.
83    maze         - This is the X maze demo modified to take a -root option
84                   so that it works with xscreensaver.
85    lmorph       - morphing line drawings.
86    bubbles      - condensation forms on your monitor, then pops.
87    deco         - Generates Brady-Bunch-era wall paneling.
88    moire        - Circular interference patterns.
89    moire2       - More moire.
90    kaleidescope - Groovy, man.
91    swirl        - Swirly color-cycling patterns.
92    bouboule     - Spinning bubbles on a transparent ball.
93    braid        - Draws random color-cycling braids around a circle.
94    drift        - Drifting recursive fractal cosmic flames.
95    vines        - Small, curvy geometric patterns.
96    galaxy       - Spinning, colliding galaxies.
97    grav         - Orbital simulation and/or cloud chamber.
98    ifs          - Spinning, colliding iterated-function-system shapes.
99    julia        - Animated rendition of the Julia set.
100    laser        - Moving radiating lines.
101    lightning    - Crackling fractal lightning bolts.
102    penrose      - Quasiperiodic tilings.
103    sierpinski   - two-dimensional Sierpinski triangle.
104    slip         - Sucks your desktop through a jet engine.
105    spiral       - Circular color-cycling interference patterns.
106    strange      - Animating strange attractors.
107    flag         - A waving flag of an arbitrary bitmap or text.
108    sphere       - Draws a bunch of shaded spheres.
109    forest       - grows a fractal forest.
110    lisa         - draws animated full-loop lisajous figures.
111    lissie       - another lisajous path.
112    goop         - Squishy transparent oil-and-bubble images
113    starfish     - Radially-symmetric throbbing colormap-hacking blobs.
114    munch        - The classic 1962-vintage "munching squares" hack.
115    rd-bomb      - Reaction-diffusion fractals.
116    coral        - Simulation of coral growth, sort of.
117    fadeplot     - Draws a swimming ribbon.
118    mountain     - Generates mountains on a square grid.
119    triangle     - Generates mountains on a triangular grid.
120    worm         - Draws wiggly worms.
121    rotor        - Draws a rotating spiral pattern.
122    ant          - A cellular automaton.
123    xjack        - Simulates a schizophrenic typist.
124    xlyap        - Calculates and displays Lyapunov exponents.
125    flow         - More strange attractors.
126    gears        - Draws interlocking rotating gears (GLX only.)
127    morph3d      - Draws shiny shape-changing 3d forms (GLX only.)
128    superquadrics - More shiny shape-changing 3d forms (GLX only.)
129    pipes        - Generates a field of intertwined plumbing (GLX only.)
130    rubik        - Solves a Rubik's Cube (GLX only.)
131    sproingies   - Marble Madness meets Q-Bert (GLX only.)
132    stairs       - Draws Escher's infinite staircase (GLX only.)
133    cage         - Draws Escher's impossible cage (GLX only.)
134    moebius      - Draws Escher's Moebius Strip II (GLX only.)
135    atlantis     - Draws swimming mammals (GLX only.)
136
137 All of these will pop up their own window unless given that -root option.
138 See their man pages for more details.
139
140 Other reasonable things to use as screensavers, if you have them, are
141
142   xdaliclock -root -builtin2    - melting digital clock
143   xswarm -r 2>&-                - swimming sperm
144   xwave -root                   - random 3d graphs
145   xbouncebits                   - bounce arbitrary bitmaps around
146   ico -r -p8 -faces -sleep 1    - it's dull, but it's there
147   xv -root file.gif -quit       - they don't all have to animate!
148   xsplinefun                    - bouncing splines
149   xfishtank -c black -d -r 1    - fish (use version 2.0 or later)
150   xmountains -b                 - very realistic generated mountains
151   xtacy -root                   - various eye candy
152   xearth -wait 0 -timewarp 400  - the earth as seen from space
153   /usr/demos/bin/bongo          - an SGI GL demo
154   /usr/demos/bin/ep -S          - another: the stunning ElectroPaint.
155                                   (Compile hacks/xscreensaver-sgigl.c
156                                   to use these with xscreensaver.)
157
158 You can get most of these from the contrib directory on ftp.x.org.  If you
159 know of (or write) any other interesting programs that can be used as
160 screensavers, please let me know!
161
162 The latest version of xscreensaver is always available on the web at
163 http://people.netscape.com/jwz/xscreensaver/.
164
165         -- Jamie Zawinski <jwz@netscape.com>
166
167 \f
168 Changes since 2.16:     Added a -window-id argument to most hacks, so that they
169                         can draw on arbitrary externally-provided windows.
170                         Synched with xlockmore 4.11a01.
171                         Added `flow' hack.
172                         Added `atlantis' GL hack.
173                         Renamed `puzzle' hack to `jigsaw', since xlock already
174                         had a different mode called `puzzle'.
175                         Made it self-configure properly when Motif 2.1.0 is
176                         being used (requires -lXp now, sigh...)
177 Changes since 2.15:     Made `flag' able to do XPM images.
178                         New look for the xscreensaver logo (`xroger').
179                         Fixed compilation error on Suns with adjunct passwords.
180                         Got multi-architecture builds working again.
181                         Some configure tweaks for building on HPUX and Solaris.
182                         Fixed bug in decayscreen.
183                         Fixed typo in passwd.c.
184                         Made `cynosure' not die when colormap is full.
185 Changes since 2.14:     Added `cynosure' hack.
186                         Added `moire2' hack.
187                         Tweaked `erase.c' some more.
188                         Made unfading a bit smoother.
189                         Added `vidwhacker' hack (not installed by default.)
190                         Added `stairs' hack.
191                         Split `escher' into `cage' and `moebius', as per
192                         xlockmore.
193                         Changed subprocess handling to use sigaction() instead
194                         of signal() if it's available (this is necessary for
195                         SCO but should work fine on other systems too.)
196                         Various other tweaks.
197 Changes since 2.13:     Better fix for the Motif drag-and-die lossage.
198                         Put in some kludges to work around a LessTif bug.
199                         XScreenSaver is known to work with LessTif 0.82 now.
200                         Made fading work on high-end SGI video hardware.
201                         Fixed another SGI-specific bug in screen grabbing;
202                         will the madness never cease?
203                         Fixed another crash in `xlyap'.
204 Changes since 2.12:     Made `decayscreen' do directions other than down.
205                         Improved `puzzle'.
206                         Fixed a crash in `xlyap'.
207                         Added CDE info to the man page, removed `cde.txt'.
208                         Configure tweaks for Zippy.
209                         Turned off the signal handling in `bubbles' because
210                         it was sometimes failing to die.
211                         Added `hacks/xscreensaver-sgigl.c' to make it possible
212                         to run SGI's ElectroPaint hack (/usr/demos/bin/ep)
213                         with xscreensaver.  Finally!
214                         Fixed a buffer overrun in the locking code that some
215                         wily, malicious cracker must have slipped in.
216                         Disabled Motif drag-and-drool in the dialog box
217                         buttons, since it's broken in some old versions of
218                         Motif.
219 Changes since 2.11:     Added `README.debugging'.
220                         Added `puzzle' hack.
221                         Added `xlyap' hack.
222                         Added "default-n" as a visual name, so that one can
223                         have -install on by default, but turn it off for
224                         certain poorly-behaved hacks (like xv.)
225                         Added support for grabbing frames of external video
226                         (on SGI) to the screen-grabbing hacks (decayscreen,
227                         slidescreen, slip, blitspin, and puzzle.)
228                         Improved look of tiles in `slidescreen'; fixed its
229                         color allocation problem.
230 Changes since 2.10:     Tweaked `blitspin', added it to the default list.
231                         Added `lissie', `mountain', `triangle', `worm',
232                         `rotor', and `ant' from xlockmore.
233                         Updated `sierpinski', `galaxy', and `lisa'.
234                         Thickened the lines in `braid' and `lmorph'.
235                         Updated VMS makefiles.
236                         Renamed `fract' to `vines'.
237                         Added `xjack' hack.
238                         Made a few more hacks use erase.c, and added a few
239                         more wipe styles.
240                         Fixed compilation problem with Sun's version of OpenGL.
241                         Added ability to use sigaction() instead of signal()
242                         to work around a SCO kernel bug.
243 Changes since 2.09:     Fixed colormap bugs in `rd-bomb'; sped up `coral'.
244                         Configure tweaks for *BSD.
245 Changes since 2.07:     New hacks `rd-bomb' and `coral'.
246                         New version of `maze' with some new algorithms.
247                         New colorized version of `rocks'.
248                         Fixed a bug in qix on 64-bit machines.
249                         Fixed a bug in the -time option.
250                         Fixed a bug in configure related to LessTif.
251 Changes since 2.06:     Minor header tweaks in windows.c and flag.c.
252                         Made multi-architecture (VPATH) builds work properly.
253                         Merged new GL stuff from xlockmore (rubik, morph3d.)
254                         Fixed intermittent crashes in `imsmap' and `munch'.
255                         Added `fadeplot' hack from xlockmore.
256 Changes since 2.05:     Merged in VMS support from Patrick Moreau.
257 Changes since 2.04:     Fixed a MIT-SCREEN-SAVER-related crash, and tweaked 
258                         configure to detect the extra-random -Xss library.
259 Changes since 2.03:     HP configure tweaks.  Detect and warn about LessTif.
260                         Fixed low-color behavior of `goop', `pyro', `starfish',
261                         `greynetic', `flame', `halo', and `moire'.
262 Changes since 2.02:     Fixed flicker in `pipes'.  Fixed 3d in `bouboule'.
263                         Added `munch' hack.
264                         Added basic dependencies to the Makefile.in files.
265 Changes since 2.01:     Fixes for compiling with the MIT saver extension.
266                         Made the yow/fortune program be a configure option.
267                         Various configure tweaks.
268 Changes since 2.00:     Added `goop' and `starfish' hacks.
269                         Added colomap cycling to `halo'.
270                         Made `attraction' use the new colormap allocator.
271                         Added better $PATH diagnostics.
272                         There was a bug in frand!  Color selection should be
273                         much improved now.
274 Changes since 1.34:     Converted to use `configure' instead of `imake'.
275                         ANSI C is now required.
276                         Added Kerberos locking support, from Nat Lanza.
277                         Made the stderr text use overlay planes, if possible.
278                         Reworked the xlockmore compatibility stuff again.
279                         Added `gears', `superquadrics', `escher', `pipes',
280                         and `sproingies' hacks (depend on OpenGL.)
281 Changes since 1.33:     Fixed some bugs, made fading be a little smoother.
282 Changes since 1.32:     Made it work with multi-headed displays.
283                         Generalized sub-process management (Unix sucks!)
284                         Added interactive mouse frobbing to Julia.
285                         Added (untested) support for HPUX shadow passwords.
286                         Made normal non-shadow passwords be checked if the
287                         shadow passwords aren't accessible for some reason.
288 Changes since 1.31:     Removed *colorPrograms and *monoPrograms resources:
289                         made it possible to specify the desired visual on a
290                         per-hack basis.
291                         Cleaned up / restructured the driver: no more globals.
292                         Made the Motif and Athena dialogs share more code.
293                         Probably fixed some Athena colormap-installation bugs.
294                         Fixed screen grabbing (cmap) on SGI 12-bit PseudoColor.
295                         Fixed divide-by-zero in bright random colormaps.
296                         Added an improved version of xlock's `flag' hack.
297                         Made unfading work better, and not flicker on SGIs.
298                         Added `sphere', `forest', `lisa' hacks from xlockmore.
299                         Added (untested) support for SunOS Adjunct passwords.
300 Changes since 1.30:     Improved colors and colormap cycling of many hacks.
301                         Cleaned up xlockmore compatibility layer.
302                         Made `blitspin' able to grab an image off the screen.
303                         Ported `swirl' and `bouboule' hacks from xlockmore.
304                         Made the driver more careful about not leaving bits on
305                         the screen, or allowing other windows to raise 
306                         themselves: it now re-blanks the screen every so often.
307                         Added `-time' option to `xscreensaver-command'.
308                         Improved SGI screen-grabbing some more: now it can grab
309                         TrueColor screens into PseudoColor windows and have the
310                         colors still come out semi-reasonably.
311 Changes since 1.29:     Made `slidescreen' and `decayscreen' work better on
312                         SGIs when windows of different visuals are present, by
313                         using the XReadDisplay() extension to get a true 24-bit
314                         image out of the frame buffer.
315                         Made `noseguy' be in color, if compiled with XPM.
316                         Ported `braid', `drift', `fract', `galaxy', `grav', 
317                         `ifs', `julia', `laser', `lightning', `penrose',
318                         `sierpinski', `slip', `spiral', and `strange' hacks
319                         from xlockmore.
320                         Merged `hopalong' hack with a more recent version.
321                         Added `cde.txt'.
322 Changes since 1.27:     Added `deco', `moire', and `kaleidescope' hacks.
323                         Merged in support for non-Motif locking and demo mode.
324                         Made `blitspin' and `bubbles' work in TrueColor.
325                         Fixed a stupid bug I introduced in `imsmap'.
326                         Added `poly' and `gravity' options to `qix'.
327 Changes since 1.26:     Added support for SGI SCREEN_SAVER extension.
328                         Made `fade' and `unfade' work on 8-bit SGIs.
329                         Made the dialog boxes more Motify.
330                         Added `bubbles' hack.
331 Changes since 1.25:     Added `lmorph' hack.
332                         Added viscosity and mouse-control to attraction.
333                         Fixed possible bad color choices in qix and attraction.
334                         Added ramp-mode to halo.
335                         Added a new RNG, which is faster and more portable
336                         than using the RNG in libc.
337                         Made locking work on SCO.
338                         Various other minor tweaks that I don't remember.
339 Changes since 1.24:     Made it capture the stdout/stderr of its subprocesses
340                         and present them on the screensaver window itself.
341                         Made demo mode work correctly with non-default visuals
342                         and color maps, instead of always using the defaults.
343                         Added -visual argument to all included screenhacks.
344                         Support for the R6 MIT-SCREEN-SAVER server extension.
345                         Made the demo mode list scroll properly.
346                         Added `pedal' hack.
347 Changes since 1.23:     Fixed some private-colormap oddities in slidescreen,
348                         decayscreen, and xroger.  Fixed apparent conservation-
349                         of-mass problem in pyro; made the shrapnel round.
350 Changes since 1.22:     Minor tweaks for IRIX5; fixed locking race condition.
351 Changes since 1.21:     Minor tweaks for X11R6.
352                         Fixes for non-default visuals.
353 Changes since 1.20:     Fixed bug in color blitspin; added default image.
354                         Added diagnostics to noseguy.  Fixed off-by-one
355                         error in flame.  Added some missing casts.
356 Changes since 1.18:     Added `flame' hack.
357                         Fixed a minor Motif dialog text field bug.
358                         Fixed yet another XPointer-not-defined-in-R4 bug.
359 Changes since 1.17:     Added support for shadow password files.
360                         Fixed some Motif-related locking bugs.
361                         Added diagnostics when locking is disabled.
362                         Made blitspin able to use the XPM library.
363                         Added `decayscreen' hack.
364 Changes since 1.16:     Added `halo' hack.
365 Changes since 1.15:     Portability fixes.
366 Changes since 1.14:     Broke the driver up into more source files.
367                         Moved the hacks into their own directory.
368                         Made all `time' parameters accept the 00:00:00 syntax,
369                         so that even the parameters which are normally read as
370                         minutes can be specified in seconds.
371                         Added colormap cycling to `imsmap'.
372                         Made hyper work with K&R compilers.
373 Changes since 1.13:     Added `orbit' option to `attraction' hack.
374                         Added `lock-timeout' option.
375                         Cleaned up options of `maze' hack.
376 Changes since 1.8:      Added demo mode, and locking.
377                         Added `maze' hack.
378                         Added `norotate' option to `rocks' hack.