This is xlock version 23.21.2 (patchlevel 2.3).
In order to run this, you will need Linux 0.96bpl2, GCC 2.2.2 shared
libraries and X11R5 (linux release 1.1).

Installation:

Move xlock into /usr/bin/X11 (or wherever your X binaries are).
Move XLock.ad into /usr/lib/X11/app-defaults (or wherever your application
	defaults files are) and rename to XLock. (without the dot)
You might want to edit the XLock application defaults file to suit your
	personal preferences.
Move xlock.man to /usr/man/mann/xlock.n

Do-It-Yourselfers:

I've provided an xlock.a that you can use to link your own version.  Just
run the command:
	gcc -fwritable-strings -o xlock xlock.a -lXext -lX11 -lm
And you'll get a working executable.

If you want to compile your own from scratch, you'll have no problems with
the standard sources.  Just make sure you put -DSYSV on the DEFINES line
in your Imakefile.

Operation:

Under X, run xlock.  The screen will clear, and some pretty animated picture
(exactly which depends on which module is active) will appear on the screen.
If you hit a key, then the screen will clear, and (unless you've changed
the application defaults file that I packaged with this) you'll get a
white screen with some graphics in the top center.  These graphics
consist of a reduced size image of the module you were viewing, the
name of the user who executed xlock, and password prompt field, and
some short instructions.

At this point, you can either click on the graphic to return to xlock,
or you can type a password.  If the password is verifiable as the
root password, or the password of the user listed above, then xlock
will terminate.  THIS IS THE ONLY WAY TO STOP XLOCK WITHOUT SHUTTING
DOWN THE X SERVER.  That's what makes it a lock.

XLock is by no means a passive program...  It uses quite a bit of
CPU, so don't expect to be able to do a compile in the background.
XLock is able to nice itself to relieve this problem a bit, but it
can only help so much.

Resources:

There are two sets of resources for XLock.  The first set are (what I call)
global XLock resources, while the second set consists of module-specific
resources.  I'll get more into modules a little further below.

The global resources are:
	XLock.mode: This sets the module.  More about this later.
	XLock.font: This is the font used on the password entry screen.
	XLock.background: The background color for the password entry screen.
	XLock.foreground: The foreground color for the password entry screen.
	XLock.username: The label for the field indicating the user name.
	XLock.password: The label for the password prompt.
	XLock.info: The "short instructions" to print.
	XLock.validate: A message to display while checking the password
	XLock.invalid: A message to display if the password is incorrect
	XLock.nice: How much XLock should nice itself.
	XLock.timeout: How long to wait idle at the password prompt.
	XLock.mono: Monochrome mode (yes or no)
	XLock.nolock: disable the lock mechanism (yes or no)
	XLock.remote: allow remote locking (meaningless under linux)
	XLock.allowroot: allow the root password to unlock (yes or no)
	XLock.enablesaver: allow the system screensaver to work (yes or no)
	XLock.allowaccess: allow other clients to connect while active
		(meaningless under linux)
	XLock.echokeys: Echo "?" for each password keypress (yes or no)
	XLock.usefirst: Ignore the first character typed (yes or no)
	XLock.verbose: Verbose mode. (yes or no)

Xlock has a number of modules which it can display.  Currently, the
modules are: hop (hopalong fractals), QIX (as in the arcade game),
image (bouncing bitmaps), life (Conway's game of life), swarm (a wasp
tries to escape some bees), rotor (truly strange), pyro (fireworks),
flame (cosmic flame fractals -- my favorite), worm (crawling multi-colored
worms), blank (just a screen blanker).  Each module has the following
resources defined:

	XLock.<module>.delay: How long to wait between draws (usec)
	XLock.<module>.batchcount: How many draws between initializations
	XLock.<module>.saturation: Saturation (as in HSV) of colors to use.

It turns out that each module is characterized by a number of inializations,
separated by a number of "draws".  It's a little hard to describe exactly
what these are without showing you the source code, but let me give you
a concrete example:

	The life module initializes by clearing the screen and initializing
	the playing field.  It then draws the playing field on the screen.
	In each draw phase, one generation is calculated, and then drawn
	on the screen.  After a certain number of generations, the current
	game is thrown away, and a fresh one is started.

					Darren Senn
					sinster@scintilla.capitola.ca.us
					7/1/92

Below is the README that came with the source code..............

This is the latest version of xlock (sccs version 23.21) patchlevel = 2.3

CHANGES:
    o added worm mode.
    o old -name and .name changed to -username and .username.
    o lint cast.
    o change color allocation to allow "#ffaabb" style color names.
    o portability bug in flame mode fixed plus some other nits.
    o white on black on monochrome screens fixed.

 Copyright (c) 1988-91 by Patrick J. Naughton.

 Permission to use, copy, modify, and distribute this software and its
 documentation for any purpose and without fee is hereby granted,
 provided that the above copyright notice appear in all copies and that
 both that copyright notice and this permission notice appear in
 supporting documentation.

 This file is provided AS IS with no warranties of any kind.  The author
 shall have no liability with respect to the infringement of copyrights,
 trade secrets or any patents by this file or any part thereof.  In no
 event will the author be liable for any lost revenue or profits or
 other special, indirect and consequential damages.

    ______________________________________________________________________
    Patrick J. Naughton				   email: naughton@sun.com
    Sun Microsystems Laboratories, Inc.		   voice: (415) 336 - 1080
