For many years sawfish was my window manager of choice for my GNU/Linux box. However, back when I did use it all the time, I wrote a number of add-ons for it:


A rather horrible idea I had one evening and couldn't resist coding up. This module turns sawfish into a talking window manager (you'll need a copy of festival installed). Download festival.jl and annoy everyone within earshot of your workstation.


home-ws.jl allows me to treat one of my workspaces as a "home" workspace. Whenever the last window on another workspace is closed the "home" workspace becomes the current workspace.


keydrag.jl provides a number of functions for moving windows. These functions can easily be bound to keys, allowing you to move windows without the need to reach for a pointing device. The package also contains a function that creates a default set of keypad bindings.


navigator.jl contains functions that provide a method if finding netscape windows and working with them (currently the only thing you can do is get at an URL, if I find other useful things I'll add them).

I find `navigator-url' really useful in conjunction with sawfish.el and emacs. Using code like this:

(defun insert-navigator-url ()
  "Insert the URL that Netscape Navigator is looking at.

Note that the URL of the first Navigator window found is inserted."
  (let ((url (sawfish-code (navigator-url))))
    (when url
      (insert url))))

in emacs I can bind a key that inserts the URL that the first navigator window is looking at.


sawfish.el is an emacs package for working with sawfish. As well as providing a programming mode for editing sawfish config files (nothing clever, it simply derives from emacs-lisp-mode) it also allows direct interaction with the window manager from the buffer.


uptimes.jl tracks the uptimes of your sawfish sessions. It will remember and display the last 'n' uptimes and the top 'n' uptimes where 'n' is a configurable value.


wclass.jl contains some functions for working with and testing window classes.


ws-send-to.jl provides a function for modifying the "Send window to" option of the window operations menu so that it gives a list of all the currently available workspaces.

Page last modified: 2017-03-31 16:31:56 UT
Dave Pearson <>
Valid XHTML 1.1 Valid CSS