Frequently Asked Questions
**************************

  1. How do I add customizations?

     There are several files controlling this:

    `~/.sawmillrc'
          Hand written lisp code, loaded at startup. This is where
          almost all explicit customization should be done.

    `sawmill-defaults'
          This lisp library is only loaded if there's no `.sawmillrc'
          file.

    `~/.sawmill/custom'
          This stores customizations created by the configuration tool;
          it shouldn't really be edited manually.

          This file is loaded *after* `sawmill-defaults', but *before*
          `.sawmillrc'.

  2. What's this `sawmill-client' program?

     This allows you to connect to a window manager process and evaluate
     arbitrary Lisp forms. Do `sawmill-client -?' for more details
     (`sawmill-client -' for a read-eval-print loop)

     By default you can only connect from the host running the wm
     (through a unix-domain socket). To enable the network based
     server, evaluate the lisp form `(server-net-init)'.

     Note however that this connects through the X server, meaning that
     anyone who can open windows on your display can also execute any
     Lisp code on the host running the window manager (and by extension,
     *execute any program*).

     So *don't* run the net server with X access control disabled
     (unless you're not connected to a network)

  3. How do I bind a key to execute a shell command?

     This isn't yet possible through the configuration tool. However
     these bindings can be defined in your `~/.sawmillrc' file. For
     example:

          (bind-keys global-keymap
            "C-M-ESC" '(system "xterm &"))

     binds the event `C-M-ESC' to the Lisp code to start an `xterm'
     subprocess

  4. How do I make clicking on a window raise the window?

     Bind the event `Button1-Click1' in the `window-keymap' to the
     `raise-window-and-pass-through-click' command

  5. How do I redefine the `Applications' menu?

     See the `Popup Menus' node in the Info manual (*note Popup
     Menus::.)

  6. How do I read the Info manual?

     Either execute the command `info sawmill', or enter the Info mode
     within Emacs (`C-h i') and type `g (sawmill) RET'.

     If you're using GNOME, then try executing `gnome-help-browser
     info:sawmill'.

  7. How do I create a new theme?

     See the `Window Frames' node of the Info manual (*note Window
     Frames::.)

     Basically though, create a directory `~/.sawmill/themes/FOO' where
     FOO is the name of your theme. Then copy any images into this
     directory and create a file `theme.jl' that will be loaded to
     initialise the theme

     The configuration tool will display the contents of a file called
     `README' in the directory (but make it 80-column text, and only a
     few lines)

  8. How do I port an Enlightenment theme to sawmill?

     There's no automatic translation available. Get the images used in
     the window border, then write a `theme.jl' file telling the window
     manager how they are used to form a window frame

     See the `themes/brushed-metal' directory for an example, and the
     Info manual for the documentation

  9. Are there any other themes available?

     Thanks to those nice people at themes.org, there's now
     `http://sawmill.themes.org/' for your theming pleasure

 10. Why don't GTK themes work with sawmill?

     There was a problem with older versions of the `gtk-engines'
     package preventing engine based themes working with several
     interpreted languages. Get the latest `gtk-engines' from
     `ftp://ftp.gnome.org/'

 11. Why don't you use GUILE?

     Mainly because I'm lazy; I had already written rep, and therefore
     understood it completely, whereas I have never used GUILE. Also,
     rep has some features not available in GUILE (byte-code
     compilation, autoloading, built-in event-loop, ...)

     But before you flame me: yes I do think scheme is a more elegant
     language

 12. Will you add feature X?

     Possibly. But only if it can be written in Lisp, or doesn't
     conflict with the overall design aims.

     These aims are to build a lightweight, generally applicable, set of
     core window management functions, then write *all* high-level
     functionality as Lisp extensions

 13. Is there a sawmill mailing list?

     Yes, thanks to Erik Arneson <erik@starseed.com> who manages it.

     To subscribe, send a message to <majordomo@aarg.net> with
     `subscribe sawmill' in the body.

     The list is archived at `http://inanna.starseed.com/sawmill'.


