This README file tries to explain how to install the Epoch Scrollbar
system.  Unlike "normal" X apps, we're experimenting with a new idea, viz.
that facilities like scrollbars should be provided by an external "server".
This helps to reduce the size of applications and makes it possible to
build UIs that are constructed collaboratively by several applications.  As
apps become more integrated, knowing how to do this kind of thing is
becoming more important.  So, in addition to Epoch, you need 3 things:

1.  A way for tools to communicate.  We have developed a daemon called the
message bus that does suchlike things.  The mbus can be used for many other
things besides epoch/widget server integration, and can be used to allow
any "knowledgable" (ie knows about the mbus) tools to communicate.  It's
conceptually a lot like Sun ToolTalk, or the Field BMS, or the HP SoftBench
message service.  All of those facilities could substitute for our Mbus, if
you have them and are prepared to do a little programming.   In the
future we'll allow you to plug your favorite tool interconnection model in.

2.  A server that provides widgets (like scrollbars) to applications;  ours
is called Biscuit or the widget server.

3.  A widget set.  For now, you MUST use Motif.  We plan to support
OpenWindows widgets soon, and perhaps eventually a scaled-back widget
server with Aw widgets.  Unfortunately, we cannot distribute Motif, or
binaries with Motif, so for now you need Motif to test/play with this code.
(actually, to make biscuit).

Actually, the widget server can be used to do almost anything widgety, so
you can put menus, dialog boxes, etc on your epoch and control it from
elisp.  For the moment, the code only shows you how to do the scrollbars,
but the biscuit manual does cover the gamut of what you can do.  Menubar
examples will follow shortly.

INSTALLATION:

1.  From cs.uiuc.edu, get pub/epoch-files/widgets/widgets.tar.Z, and
	also get this README file 

    This will unpack into these directories:

       mbus - source code for the message bus

       ws - source code for biscuit, the widget server

       doc - documentation for the mbus and biscuit.

       bin - an (initially empty) bin directory

       elisp - some elisp libraries for scrollbars, interaction with the
		message bus, and so on.

       config - config information

    also some Makefiles, and a README.

Follow the instructions in the README file.  This will produce, in 
the bin directory, the executables mbus and biscuit.  It will also produce
libmb.a for linking with other applications that may want to use the
Message Bus (if you want to write them;  and we have some others, like
graph browsers, that we will be releasing soon).

A. You must modify your .emacs as follows:

	0. ensure that the elisp directory of this distribution is in your
		load-path (you could also do this by changing
		EMACSLOADPATH), or copy the files therein to a directory
		that is in your load-path.
	
	1. execute the code in elisp/add-to-dot-emacs (you might as well
		just include this in your .emacs file).

B.  set the following environment variables:

	MBUS_HOST.	The value should be the machine on which you're
		going to run the mbus.  An mbus can be shared amongst
		multiple users, but this does sometimes cause small
		performance degradations.  Default is your local machine.
	
	MBUS_PORT.	The port at which the mbus should listen.  Default
		is 2390.


C.  start the message bus.

	$ mbus &

	arguments allow you to override environment variables, turn on
	tracing, etc.  See the mbus doc for more info.

D.  start biscuit

	$ biscuit &

	this will give you a little control panel.  The only interesting
	buttons are "quit" and "destroy shells".  The others do things that
	related to CB, a collaborative work environment (contact
	kaplan@cs.uiuc.edu for more info if this interests you).  Destroy
	shells will destroy all "shells" the widget server creates,
	including all  epoch windows.  Quit does the same thing and then
	kills the server.

E.  start epoch, as usual.

We should wrap all this into a shell script.  Anyone want to do that?

SOME NOTES:

The Mbus and Widget Server are NOT distributed under the GNU CopyLeft, but
under a license like the X license.  There are effectively no restrictions
on how you use the code, and no warantee either.

The following are known bugs with the scrollbar interface:

1.	If Epoch crashes, biscuit does not correctly clean up the widget
"wrappers" it creates.  Use the "destroy shells" button to get rid of them.

2.	If you are running multiple epochs with the same mbus/biscuit
configuration, sometimes things get a bit wierd.  We need to clear this up.

Please use the epoch-design list for discussion of scrollbar related issues
for the moment.  When the code is stable enough, we'll move this discussion
to the full epoch list.
