-See config.h for configuration parameters. To build, do the usual:
+ XScreenSaver
- xmkmf ; make ; make install ; make install.man
+ a screen saver and locker for the X window system
+ by Jamie Zawinski
+
+To build on Unix:
+
+ - ./configure
+ - make
+ - make install
+
+The `configure' shell script will attempt to figure out which options are
+appropriate for your system, and will create config.h and the various
+Makefiles for you. Run `configure --help' to see how to override these
+choices, or to specify things like the default installation directory.
+The file `INSTALL' gives a general overview of use of these sorts of
+configure scripts (those generated by the GNU autoconf system.)
+The most important hint is probably this:
+
+ ./configure --includedir=/opt/Motif/include --libdir=/opt/Motif/lib
+
+To build on VMS, see README.VMS.
+
+If you think you've found a bug, please let me know; but first, read
+the enlosed `README.debugging' file to find out what kind of information
+would be most helpful to include in your bug report.
+
+ ============
The xscreensaver program waits until the keyboard and mouse have been idle
for a period, and then runs a graphics demo chosen at random. It turns off
installed: you don't need to recompile this program to add a new display
mode, you just change some resource settings. Any program which can be
invoked in such a way that it draws on the root window of the screen can
-now be used as a screensaver without modification [*]. The programs that
+now be used as a screensaver without modification. The programs that
are being run as screensavers don't need to have any special knowledge
about what it means to be a screensaver.
-The XIdle extension will be used if you have it (win win.)
+The XIDLE, MIT-SCREEN-SAVER, and/or SGI SCREEN_SAVER server extensions
+will be used if you have them.
-Unfortunately, locking doesn't work if you don't have Motif.
+The dialog boxes (for locking and demo-mode) look best using Motif, but
+can be configured to use Athena widgets instead.
Also included are several graphics hacks for use as screensavers. There's
nothing magic about these: they're just programs that draw on the root
qix - My own implementation of this, with many more options
than you would have thought qix could have.
helix - Generates spirally "stringart" patterns.
+ pedal - Draws a different kind of spirally pattern.
rorschach - Random inkblot patterns.
attraction - A bouncing ball demo, or a qix-like demo, or a wild
color-cycling thing, with some odd rules.
hypercube - 2d projection of a hypercube rotating on all four axes.
slidescreen - Divides the screen into a grid and plays a 16-puzzle on it.
decayscreen - A melting effect.
+ jigsaw - Turns the screen into a jigsaw puzzle and shuffles it.
halo - Random circular patterns.
pyro - Fireworks. Looks a lot like the version in xlock.
hopalong - Fractals. I snarfed this code from xlock.
+ flame - Fractals. Also from xlock.
noseguy - A guy with a big nose wanders around the screen saying
things. I snarfed this code from xnlock.
maze - This is the X maze demo modified to take a -root option
so that it works with xscreensaver.
+ lmorph - morphing line drawings.
+ bubbles - condensation forms on your monitor, then pops.
+ deco - Generates Brady-Bunch-era wall paneling.
+ moire - Circular interference patterns.
+ moire2 - More moire.
+ kaleidescope - Groovy, man.
+ swirl - Swirly color-cycling patterns.
+ bouboule - Spinning bubbles on a transparent ball.
+ braid - Draws random color-cycling braids around a circle.
+ drift - Drifting recursive fractal cosmic flames.
+ vines - Small, curvy geometric patterns.
+ galaxy - Spinning, colliding galaxies.
+ grav - Orbital simulation and/or cloud chamber.
+ ifs - Spinning, colliding iterated-function-system shapes.
+ julia - Animated rendition of the Julia set.
+ laser - Moving radiating lines.
+ lightning - Crackling fractal lightning bolts.
+ penrose - Quasiperiodic tilings.
+ sierpinski - two-dimensional Sierpinski triangle.
+ slip - Sucks your desktop through a jet engine.
+ spiral - Circular color-cycling interference patterns.
+ strange - Animating strange attractors.
+ flag - A waving flag of an arbitrary bitmap or text.
+ sphere - Draws a bunch of shaded spheres.
+ forest - grows a fractal forest.
+ lisa - draws animated full-loop lisajous figures.
+ lissie - another lisajous path.
+ goop - Squishy transparent oil-and-bubble images
+ starfish - Radially-symmetric throbbing colormap-hacking blobs.
+ munch - The classic 1962-vintage "munching squares" hack.
+ rd-bomb - Reaction-diffusion fractals.
+ coral - Simulation of coral growth, sort of.
+ fadeplot - Draws a swimming ribbon.
+ mountain - Generates mountains on a square grid.
+ triangle - Generates mountains on a triangular grid.
+ worm - Draws wiggly worms.
+ rotor - Draws a rotating spiral pattern.
+ ant - A cellular automaton.
+ xjack - Simulates a schizophrenic typist.
+ xlyap - Calculates and displays Lyapunov exponents.
+ flow - More strange attractors.
+ gears - Draws interlocking rotating gears (GLX only.)
+ morph3d - Draws shiny shape-changing 3d forms (GLX only.)
+ superquadrics - More shiny shape-changing 3d forms (GLX only.)
+ pipes - Generates a field of intertwined plumbing (GLX only.)
+ rubik - Solves a Rubik's Cube (GLX only.)
+ sproingies - Marble Madness meets Q-Bert (GLX only.)
+ stairs - Draws Escher's infinite staircase (GLX only.)
+ cage - Draws Escher's impossible cage (GLX only.)
+ moebius - Draws Escher's Moebius Strip II (GLX only.)
+ atlantis - Draws swimming mammals (GLX only.)
All of these will pop up their own window unless given that -root option.
See their man pages for more details.
xswarm -r 2>&- - swimming sperm
xwave -root - random 3d graphs
xbouncebits - bounce arbitrary bitmaps around
- ico -r - it's dull, but it's there
+ ico -r -p8 -faces -sleep 1 - it's dull, but it's there
xv -root file.gif -quit - they don't all have to animate!
xsplinefun - bouncing splines
- kaleid -root - qix-like kaleidescope patterns
xfishtank -c black -d -r 1 - fish (use version 2.0 or later)
+ xmountains -b - very realistic generated mountains
+ xtacy -root - various eye candy
+ xearth -wait 0 -timewarp 400 - the earth as seen from space
+ /usr/demos/bin/bongo - an SGI GL demo
+ /usr/demos/bin/ep -S - another: the stunning ElectroPaint.
+ (Compile hacks/xscreensaver-sgigl.c
+ to use these with xscreensaver.)
-You can get all of these from export.lcs.mit.edu. If you know of (or write)
-any other interesting programs that can be used as screensavers, please let
-me know!
-
- -- Jamie Zawinski <jwz@lucid.com>
+You can get most of these from the contrib directory on ftp.x.org. If you
+know of (or write) any other interesting programs that can be used as
+screensavers, please let me know!
-[*] It may be necessary to include "vroot.h" in the program, but that would
-be necessary for it to work with virtual-root window managers anyway.
+The latest version of xscreensaver is always available on the web at
+http://people.netscape.com/jwz/xscreensaver/.
+ -- Jamie Zawinski <jwz@netscape.com>
\f
+Changes since 2.16: Added a -window-id argument to most hacks, so that they
+ can draw on arbitrary externally-provided windows.
+ Synched with xlockmore 4.11a01.
+ Added `flow' hack.
+ Added `atlantis' GL hack.
+ Renamed `puzzle' hack to `jigsaw', since xlock already
+ had a different mode called `puzzle'.
+ Made it self-configure properly when Motif 2.1.0 is
+ being used (requires -lXp now, sigh...)
+Changes since 2.15: Made `flag' able to do XPM images.
+ New look for the xscreensaver logo (`xroger').
+ Fixed compilation error on Suns with adjunct passwords.
+ Got multi-architecture builds working again.
+ Some configure tweaks for building on HPUX and Solaris.
+ Fixed bug in decayscreen.
+ Fixed typo in passwd.c.
+ Made `cynosure' not die when colormap is full.
+Changes since 2.14: Added `cynosure' hack.
+ Added `moire2' hack.
+ Tweaked `erase.c' some more.
+ Made unfading a bit smoother.
+ Added `vidwhacker' hack (not installed by default.)
+ Added `stairs' hack.
+ Split `escher' into `cage' and `moebius', as per
+ xlockmore.
+ Changed subprocess handling to use sigaction() instead
+ of signal() if it's available (this is necessary for
+ SCO but should work fine on other systems too.)
+ Various other tweaks.
+Changes since 2.13: Better fix for the Motif drag-and-die lossage.
+ Put in some kludges to work around a LessTif bug.
+ XScreenSaver is known to work with LessTif 0.82 now.
+ Made fading work on high-end SGI video hardware.
+ Fixed another SGI-specific bug in screen grabbing;
+ will the madness never cease?
+ Fixed another crash in `xlyap'.
+Changes since 2.12: Made `decayscreen' do directions other than down.
+ Improved `puzzle'.
+ Fixed a crash in `xlyap'.
+ Added CDE info to the man page, removed `cde.txt'.
+ Configure tweaks for Zippy.
+ Turned off the signal handling in `bubbles' because
+ it was sometimes failing to die.
+ Added `hacks/xscreensaver-sgigl.c' to make it possible
+ to run SGI's ElectroPaint hack (/usr/demos/bin/ep)
+ with xscreensaver. Finally!
+ Fixed a buffer overrun in the locking code that some
+ wily, malicious cracker must have slipped in.
+ Disabled Motif drag-and-drool in the dialog box
+ buttons, since it's broken in some old versions of
+ Motif.
+Changes since 2.11: Added `README.debugging'.
+ Added `puzzle' hack.
+ Added `xlyap' hack.
+ Added "default-n" as a visual name, so that one can
+ have -install on by default, but turn it off for
+ certain poorly-behaved hacks (like xv.)
+ Added support for grabbing frames of external video
+ (on SGI) to the screen-grabbing hacks (decayscreen,
+ slidescreen, slip, blitspin, and puzzle.)
+ Improved look of tiles in `slidescreen'; fixed its
+ color allocation problem.
+Changes since 2.10: Tweaked `blitspin', added it to the default list.
+ Added `lissie', `mountain', `triangle', `worm',
+ `rotor', and `ant' from xlockmore.
+ Updated `sierpinski', `galaxy', and `lisa'.
+ Thickened the lines in `braid' and `lmorph'.
+ Updated VMS makefiles.
+ Renamed `fract' to `vines'.
+ Added `xjack' hack.
+ Made a few more hacks use erase.c, and added a few
+ more wipe styles.
+ Fixed compilation problem with Sun's version of OpenGL.
+ Added ability to use sigaction() instead of signal()
+ to work around a SCO kernel bug.
+Changes since 2.09: Fixed colormap bugs in `rd-bomb'; sped up `coral'.
+ Configure tweaks for *BSD.
+Changes since 2.07: New hacks `rd-bomb' and `coral'.
+ New version of `maze' with some new algorithms.
+ New colorized version of `rocks'.
+ Fixed a bug in qix on 64-bit machines.
+ Fixed a bug in the -time option.
+ Fixed a bug in configure related to LessTif.
+Changes since 2.06: Minor header tweaks in windows.c and flag.c.
+ Made multi-architecture (VPATH) builds work properly.
+ Merged new GL stuff from xlockmore (rubik, morph3d.)
+ Fixed intermittent crashes in `imsmap' and `munch'.
+ Added `fadeplot' hack from xlockmore.
+Changes since 2.05: Merged in VMS support from Patrick Moreau.
+Changes since 2.04: Fixed a MIT-SCREEN-SAVER-related crash, and tweaked
+ configure to detect the extra-random -Xss library.
+Changes since 2.03: HP configure tweaks. Detect and warn about LessTif.
+ Fixed low-color behavior of `goop', `pyro', `starfish',
+ `greynetic', `flame', `halo', and `moire'.
+Changes since 2.02: Fixed flicker in `pipes'. Fixed 3d in `bouboule'.
+ Added `munch' hack.
+ Added basic dependencies to the Makefile.in files.
+Changes since 2.01: Fixes for compiling with the MIT saver extension.
+ Made the yow/fortune program be a configure option.
+ Various configure tweaks.
+Changes since 2.00: Added `goop' and `starfish' hacks.
+ Added colomap cycling to `halo'.
+ Made `attraction' use the new colormap allocator.
+ Added better $PATH diagnostics.
+ There was a bug in frand! Color selection should be
+ much improved now.
+Changes since 1.34: Converted to use `configure' instead of `imake'.
+ ANSI C is now required.
+ Added Kerberos locking support, from Nat Lanza.
+ Made the stderr text use overlay planes, if possible.
+ Reworked the xlockmore compatibility stuff again.
+ Added `gears', `superquadrics', `escher', `pipes',
+ and `sproingies' hacks (depend on OpenGL.)
+Changes since 1.33: Fixed some bugs, made fading be a little smoother.
+Changes since 1.32: Made it work with multi-headed displays.
+ Generalized sub-process management (Unix sucks!)
+ Added interactive mouse frobbing to Julia.
+ Added (untested) support for HPUX shadow passwords.
+ Made normal non-shadow passwords be checked if the
+ shadow passwords aren't accessible for some reason.
+Changes since 1.31: Removed *colorPrograms and *monoPrograms resources:
+ made it possible to specify the desired visual on a
+ per-hack basis.
+ Cleaned up / restructured the driver: no more globals.
+ Made the Motif and Athena dialogs share more code.
+ Probably fixed some Athena colormap-installation bugs.
+ Fixed screen grabbing (cmap) on SGI 12-bit PseudoColor.
+ Fixed divide-by-zero in bright random colormaps.
+ Added an improved version of xlock's `flag' hack.
+ Made unfading work better, and not flicker on SGIs.
+ Added `sphere', `forest', `lisa' hacks from xlockmore.
+ Added (untested) support for SunOS Adjunct passwords.
+Changes since 1.30: Improved colors and colormap cycling of many hacks.
+ Cleaned up xlockmore compatibility layer.
+ Made `blitspin' able to grab an image off the screen.
+ Ported `swirl' and `bouboule' hacks from xlockmore.
+ Made the driver more careful about not leaving bits on
+ the screen, or allowing other windows to raise
+ themselves: it now re-blanks the screen every so often.
+ Added `-time' option to `xscreensaver-command'.
+ Improved SGI screen-grabbing some more: now it can grab
+ TrueColor screens into PseudoColor windows and have the
+ colors still come out semi-reasonably.
+Changes since 1.29: Made `slidescreen' and `decayscreen' work better on
+ SGIs when windows of different visuals are present, by
+ using the XReadDisplay() extension to get a true 24-bit
+ image out of the frame buffer.
+ Made `noseguy' be in color, if compiled with XPM.
+ Ported `braid', `drift', `fract', `galaxy', `grav',
+ `ifs', `julia', `laser', `lightning', `penrose',
+ `sierpinski', `slip', `spiral', and `strange' hacks
+ from xlockmore.
+ Merged `hopalong' hack with a more recent version.
+ Added `cde.txt'.
+Changes since 1.27: Added `deco', `moire', and `kaleidescope' hacks.
+ Merged in support for non-Motif locking and demo mode.
+ Made `blitspin' and `bubbles' work in TrueColor.
+ Fixed a stupid bug I introduced in `imsmap'.
+ Added `poly' and `gravity' options to `qix'.
+Changes since 1.26: Added support for SGI SCREEN_SAVER extension.
+ Made `fade' and `unfade' work on 8-bit SGIs.
+ Made the dialog boxes more Motify.
+ Added `bubbles' hack.
+Changes since 1.25: Added `lmorph' hack.
+ Added viscosity and mouse-control to attraction.
+ Fixed possible bad color choices in qix and attraction.
+ Added ramp-mode to halo.
+ Added a new RNG, which is faster and more portable
+ than using the RNG in libc.
+ Made locking work on SCO.
+ Various other minor tweaks that I don't remember.
+Changes since 1.24: Made it capture the stdout/stderr of its subprocesses
+ and present them on the screensaver window itself.
+ Made demo mode work correctly with non-default visuals
+ and color maps, instead of always using the defaults.
+ Added -visual argument to all included screenhacks.
+ Support for the R6 MIT-SCREEN-SAVER server extension.
+ Made the demo mode list scroll properly.
+ Added `pedal' hack.
+Changes since 1.23: Fixed some private-colormap oddities in slidescreen,
+ decayscreen, and xroger. Fixed apparent conservation-
+ of-mass problem in pyro; made the shrapnel round.
+Changes since 1.22: Minor tweaks for IRIX5; fixed locking race condition.
+Changes since 1.21: Minor tweaks for X11R6.
+ Fixes for non-default visuals.
+Changes since 1.20: Fixed bug in color blitspin; added default image.
+ Added diagnostics to noseguy. Fixed off-by-one
+ error in flame. Added some missing casts.
+Changes since 1.18: Added `flame' hack.
+ Fixed a minor Motif dialog text field bug.
+ Fixed yet another XPointer-not-defined-in-R4 bug.
Changes since 1.17: Added support for shadow password files.
Fixed some Motif-related locking bugs.
Added diagnostics when locking is disabled.
Moved the hacks into their own directory.
Made all `time' parameters accept the 00:00:00 syntax,
so that even the parameters which are normally read as
- `minutes' can be specified in seconds.
+ minutes can be specified in seconds.
Added colormap cycling to `imsmap'.
Made hyper work with K&R compilers.
Changes since 1.13: Added `orbit' option to `attraction' hack.