-*- text -*-

This is sawfish, a highly configurable window manager for X11. It is
known to compile on at least Solaris/sparc and Linux/ix86; it is
released under the terms of the GNU GPL, copyright John Harper
<jsh@users.sourceforge.net>

It should be considered alpha quality, but seems stable in my
environment. For more details, see the url:

	http://sawmill.sourceforge.net/


Manifesto
*********

Sawfish is an extensible window manager using an Emacs Lisp-like
scripting language--all window decorations are configurable, the basic
idea is to have as much user-interface policy as possible controlled
through the Lisp language. This is no layer on top of twm, but a wholly
new architecture.

Despite this extensibility its policy is currently very minimal
compared to most window managers. Its aim is simply to manage windows
in the most flexible and attractive manner possible. As such it does
not implement desktop backgrounds, applications docks, or other things
that may be achieved through separate applications.

All high-level wm functions are implemented in Lisp for future
extensibility or redefinition. Currently this includes menus (using
GTK+), interactive window moving and resizing, virtual workspaces,
iconification, focus/transient window policies, frame theme definitions
and much more.

Also, most received events are exported to the Lisp environment through
``key-bindings'' and hooks, similar to in Emacs. These events include
pointer behaviour and many internal X11 events (enter/leave,
focus-in/focus-out, map/unmap, etc..)

Several themes are included, most mimic the window frames of particular
Enlightenment themes (and this is where the images originated), for
more details see the `themes' subdirectory, or the `Appearance' section
of the configuration tool.

As yet there is no user documentation; most simple configuration can be
made through the built-in customization tool. The info programming
manual documents most of the sawfish lisp interface, otherwise see the
source code for more details...


Installing
**********

To compile this distribution you'll need GNU make, Imlib, my librep
Lisp interpreter, and the rep-gtk binding installed. Sources for some
of these are:

	http://librep.sourceforge.net/
	http://rep-gtk.sourceforge.net/
	ftp://ftp.enlightenment.org/e/enlightenment/libs/

After making sure that Imlib, librep, and rep-gtk are installed, do
something similar to the following in the root of the unpacked sawfish
distribution:

	$ ./configure
	$ make all
	$ make install

If you've got GNOME installed, and you'd like to be able to configure
sawfish via the control center, pass the --enable-capplet option to
configure

Similarly, to enable readline support in the sawfish-client program,
pass --with-readline to configure

Please read the TODO list, and send me any feedback. Bug reports are
especially welcome :-)


Notes
*****

Sawfish is fully session managed using the X11R6 protocols. If the
environment variable SESSION_MANAGER is set, the window manager will
attempt to connect to it. All window state is saved and reloaded; Lisp
modules may register their own session-manager functions for any window
state that they add.

To dump all Lisp documentation strings execute the following in the
shell:

	$ sawfish --batch --no-rc rep -f rep <<EOF
	> (apropos-function "" t)
	> (apropos-variable "")
	> EOF

You probably want to redirect this to a file since it's about 150k in
size. Also it contains many functions better documented in the librep
and sawfish Info manuals.

Any customizations that can't be performed through the GUI can be put
in the `~/.sawfishrc' file, a Lisp script that is executed at startup
(after loading the GUI customizations). If this script exists, it
prevents the `sawmill-defaults' lisp library being loaded.

There is an Info manual (sawfish.info) documenting the lisp interface.

