-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.
+
+Getting Started:
+
+You can try out xscreensaver like so:
+
+ xscreensaver &
+ xscreensaver-command -demo
+
+After a few seconds, the screen should go black, and a dialog box should
+appear in the upper right corner. This is "Demo Mode".
+
+Note: unlike `xlock', xscreensaver has a client-server model: the
+`xscreensaver' process is a daemon that runs in the background; it is
+controlled by the foreground `xscreensaver-command' program.
+
+xscreensaver has an extensive manual -- please read it!
+
+ ============
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
as soon as there is any mouse or keyboard activity.
-The purpose of xscreensaver is to display pretty pictures on your screen
-when it is not in use, in keeping with the philosophy that unattended
-monitors should always be doing something interesting, just like they do
+The purpose of xscreensaver is to display pretty pictures on your screen
+when it is not in use, in keeping with the philosophy that unattended
+monitors should always be doing something interesting, just like they do
in the movies.
However, xscreensaver can also be used as a screen locker, to prevent
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 or
+Lesstif, but can be configured to use Athena widgets instead.
-Also included are several graphics hacks for use as screensavers. There's
+Also included are numerous graphics hacks for use as screensavers. There's
nothing magic about these: they're just programs that draw on the root
window, which are pointed at by the screensaver's default resource settings.
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.
+ epicycle - Spiral patterns based on pre-Copernican cosmologies.
+ interference - More groovy colored fields.
+ truchet - Nonrepeating planar tilings.
+ bsod - Simulates the system crashes of various other OSes.
+ crystal - A kaleidoscope of moving polygons.
+ discrete - Various fractal-ish "discrete map" forms.
+ distort - A moving lens wanders around the screen, magnifying it.
+ kumppa - Spinning 3D color fields, kinda.
+ 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.
+See their respective man pages for more details.
Other reasonable things to use as screensavers, if you have them, are
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 1.17: Added support for shadow password files.
- Fixed some Motif-related locking bugs.
- Added diagnostics when locking is disabled.
- Made blitspin able to use the XPM library.
- Added `decayscreen' hack.
-Changes since 1.16: Added `halo' hack.
-Changes since 1.15: Portability fixes.
-Changes since 1.14: Broke the driver up into more source files.
- Moved the hacks into their own directory.
- Made all `time' parameters accept the 00:00:00 syntax,
+Changes since 2.23: * Tweaked the order of the -L options again.
+ * Cleaned up configure's --help message.
+ * Added `kumppa' hack.
+ * Smarter maze-solving algorithm in `maze'.
+ * Took `xlyap' out of the default list of hacks, since
+ it's just incredibly buggy (and slow.) Maybe someday
+ someone will fix it...
+ * Added `distort' hack, but didn't add it to the default
+ list (yet) because it's still too slow.
+ * Made the Athena demo dialog look more like the Motif
+ version; it has a text-entry field now, too.
+ * Made the Athena password dialog echo asterisks, like
+ Motif does, instead of using a flyspeck font.
+ * Some random configure tweaks.
+ * Added a `timestamp' resource that makes the `-verbose'
+ messages include the time at which they were printed.
+Changes since 2.22: * The fix for SGI's "scheme" nonsense broke things, and
+ let the user's "*background" resource show through.
+ Fixed it in a different way.
+Changes since 2.21: * Added support for the DPMS server extension (Display
+ Power Management System.)
+ * Made configure advertize the --enable-subdir option a
+ little more, since that seemed to cause some people
+ stress. Also, made that directory be built into the
+ xscreensaver executable, as a hardcoded prefix to
+ $PATH. (Might help, shouldn't hurt.)
+ * Made configure prefer the two-arg gettimeofday to the
+ one-arg version, since AIX doesn't have any prototypes.
+ * Made it work with Xaw3d (the 3D Athena library.)
+ * Made "make install" create directories as necessary.
+ * New version of lmorph from Sverre.
+ * Added `crystal' and `discreet' hacks from xlockmore.
+ * Added a new mode to `bsod'.
+Changes since 2.20: * Made "xscreensaver-command -time" use different words.
+ (It now describes the two states as "screen blanked
+ since..." and "screen non-blanked since..." instead of
+ "active since..." and "inactive since..." which a lot
+ of people interpreted as meaning the opposite of what
+ was intended.)
+ * Improved some error messages, in the hopes of making
+ the distinction between the xscreensaver and
+ xscreensaver-command programs more obvious.
+ * Rewrote (and reorganized) parts of the xscreensaver and
+ xscreensaver-command manual pages.
+ * Renamed xscreensaver's "-lock" command-line option to
+ be "-lock-mode", to avoid confusion with the "-lock"
+ option to xscreensaver-command, which does a totally
+ different thing.
+ * Removed xscreensaver's "-demo" command-line option for
+ a similar reason; use "xscreensaver-command -demo"
+ instead.
+ * Disabled SGI's "scheme" nonsense in a better way than
+ fully-qualifying the background colors in every single
+ hack.
+ * Fixed some other minor cosmetic problems when *sgiMode
+ is turned on.
+ * Fixed an X error in `bsod -root' (how ironic...)
+Changes since 2.19: * Fixed a bug that caused the mouse to sometimes not be
+ grabbed properly (meaning the window manager menu could
+ pop up over the demo-mode display.)
+ * Fixed a bug that made the stderr output sometimes get
+ printed twice.
+ * Fixed a bug that made the demo-mode scrollbar move too
+ fast.
+ * Protected against a possible buffer overflow.
+ * Made `vidwhacker' not leave stray xv windows around.
+ * New version of `ant' so that Bagley doesn't calve.
+ * Make configure on AIX get XShm from the right library.
+Changes since 2.18: * One file was missing from the tar file. Fixed.
+Changes since 2.17: * Oops, atlantis wasn't being built by default. Fixed.
+ * Added `epicycle' hack.
+ * Added `interference' hack.
+ * Added `truchet' hack.
+ * Added `bsod' hack.
+ * Added some new modes to `vidwhacker'.
+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.
+ * Made blitspin able to use the XPM library.
+ * Added `decayscreen' hack.
+Changes since 1.16: * Added `halo' hack.
+Changes since 1.15: * Portability fixes.
+Changes since 1.14: * Broke the driver up into more source files.
+ * 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.
- Added colormap cycling to `imsmap'.
- Made hyper work with K&R compilers.
-Changes since 1.13: Added `orbit' option to `attraction' hack.
- Added `lock-timeout' option.
- Cleaned up options of `maze' hack.
-Changes since 1.8: Added demo mode, and locking.
- Added `maze' hack.
- Added `norotate' option to `rocks' hack.
+ 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.
+ * Added `lock-timeout' option.
+ * Cleaned up options of `maze' hack.
+Changes since 1.8: * Added demo mode, and locking.
+ * Added `maze' hack.
+ * Added `norotate' option to `rocks' hack.