   This is Edition 0.6, last updated 12 December 1999, of `The sawfish
Programming Manual', for sawfish, Version 0.19.

   Copyright 1999 John Harper.

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

   This document describes the Lisp programming interface to `sawfish',
an extensible X11 window manager.

   This is Edition 0.6 of its documentation, last updated 12 December
1999 for Sawfish version 0.19.

Copying
*******

   Sawfish is copyright (C) 1999 John Harper and is released under the
terms of the GNU General Public License. See the included file
`COPYING' for the full text of the license (or Copying (emacs)).

     This is free software - you are welcome to redistribute it and/or
     modify it under the terms of the GNU General Public License as
     published by the Free Software Foundation; either version 2, or
     (at your option) any later version.

     Sawfish is distributed in the hope that it will be useful, but
     WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     General Public License for more details.

Introduction
************

   Sawfish is a lisp-extensible window manager for X11. Its aim is to
allow all areas of window management (decoration, manipulation) to be
customized as far as is possible, yet still remain as fast or faster
than existing window managers.

   Despite this extensibility its policy is very minimal compared to
most window managers. It does not implement desktop backgrounds,
applications docks, or other things that may be achieved through
separate applications.

   All high-level window management functions are implemented in Lisp
for future extensibility or redefinition. Also, most received events are
exported to the Lisp environment through key-bindings and hooks,
similar to in Emacs. These events include pointer behavior and many
internal X11 events.

   Sawfish uses the librep Lisp environment (see Overview (librep)),
this is a run-time library implementing a language
similar to Emacs Lisp (see Overview (elisp)), but with many
extensions, and using lexical instead of dynamic scope. This manual
assumes at least a basic knowledge of the language.