This directory contains a browser written in Python for "Info files"
as used by the Emacs documentation system.  The browser requires that
Python is built with the "stdwin" option and runs under X11 or the
Mac window system.

Now you can read Info files even if you can't spare the memory, time or
disk space to run Emacs.  (I have used this extensively on a Macintosh
with 1 Megabyte main memory and a 20 Meg harddisk.)

You can give this to someone with great fear of complex computer
systems, as long as they can use a mouse.

Another reason to use this is to encourage the use of Info for on-line
documentation of software that is not related to Emacs or GNU.
(In particular, I plan to redo the Python and STDWIN documentation
in texinfo.)

The main program is in file "ib.py"; this accepts a file name and a
node name as optional command line arguments, i.e., its usage is

	python ib.py [file [node]]


Configuration:

- The pathname of the directory (or directories) containing
the standard Info files should be set by editing the
value assigned to INFOPATH in module ifile.py.

- The default font should be set by editing the value of FONT
in this module (ibrowse.py).

- For fastest I/O, you may look at BLOCKSIZE and a few other
constants in ifile.py.
