Sawfish Modules

Here are some modules for Sawfish, the window manager. Each module is at least partially my work, or is a dependency of a module on which I have worked. Those that are all my own work and Active-Theming are licenced under The MIT Licence, whilst the others are licenced under the GNU General Public Licence (GPL).

Each of these modules may be installed by placing the appropriate files in the ~/.sawfish/lisp/ directory. Configuration instructions for each of the top-level modules are included at the top of the containing file.


active-theming.jl

Active-Theming
  Screenshot
Active-Theming Screenshot

Active Theming. This module varies the colour of window frames depending upon
  • the host from which the window comes,
  • whether root is logged on at the window,
  • whether the window is focussed,
  • the window's title,
  • the window's group,
  • the window's position,
  • the window's stickiness, or
  • the workspace on which the window is placed.
This can be used to convey useful information, or simply to make your desktop more colourful.

Colours may either be varied using the RGB or the HSV colour models. Any variation method from the list above may vary along any of the axes, so you could change the hue depending upon the host, the saturation if root is logged in, and the value when the window is focussed, for example. Alternatively, you could have windows becoming more red depending upon the workspace and heading towards white when the window is focussed by varying both green and blue axes when the window is focussed.

This module needs support from your current theme. In the Sawfish distribution, the mono and simple themes have this support.

Depends upon hsv.jl and string2.jl below.

Version: 1.1.
Licence: MIT.
Authors: Ewan Mellor, Andrew Rice.
lookup.jl
Look-up routines. This module will take a search term either from the current selection or by prompting the user, and then will apply that term as appropriate. If the term contains a URL, then it will visit that URL. Otherwise, the term will be sent to either Google, dictionary.com, thesaurus.com, Multimap, IMDb, Wikipedia, or your API documentation.

Depends upon javadoc.jl, url.jl, and string2.jl below. In order to actually use the documentation functionality, the javadoc module is dependent upon javadoc-indexer.py, below. Without javadoc-indexer the other aspects of the lookup module will still function, though the javadoc.jl module is required none the less.

Debian users will require the librep-dev package as well as the normal dependencies of Sawfish. This is a Debian packaging issue.

Version: 1.8.
Licence: GPL.
Authors: Ewan Mellor, Yuan.
javadoc.jl
Look up a partially or fully qualified class or package name in your API documentation.

Depends upon javadoc-indexer.py below.

Version: 1.1.
Licence: MIT.
Author: Ewan Mellor.
javadoc-indexer.py
Generate an index file mapping partially or fully qualified class or package names to the corresponding documentation filename. Understands output from Javadoc, Gjdoc, Doxygen, ocamldoc, plus the Python API documentation.

Version: 1.3.
Licence: MIT.
Author: Ewan Mellor.
hsv.jl
HSV to RGB conversion.

Version: 1.2.
Licence: MIT.
Author: Ewan Mellor.
keyboard-paste.jl
One function that allows one to paste the primary selection using the keyboard, and one for clearing that selection. Includes a workaround for the XSendEvent issue with XEmacs.

Version: 1.2.
Licence: MIT.
Author: Ewan Mellor.
shutdown.jl
One function, which closes windows gracefully. If one logs out without closing Opera first, then next time one logs in, Opera complains that it was terminated unexpectedly. This function ensures a graceful close down, and thus a peaceful restart. It may be configured to shut down any window that can be closed with a single keystroke.

Version: 1.0.
Licence: MIT.
Author: Ewan Mellor.
url.jl
A URL library. Contains a function for escaping query parameters, and one for isolating URLs from strings. It also contains a function for finding the window containing your web browser, or running your browser if it is not already open, and one for visiting a URL in that window.

Depends upon remote-application.jl below.

Debian users will require the librep-dev package as well as the normal dependencies of Sawfish. This is a Debian packaging issue.

Version: 1.12.
Licence: GPL.
Authors: Ewan Mellor, Matthew Parkinson, Yuan, Sen Nagata, William M. Perry.
remote-application.jl
A module for communication with applications. Applications such as Opera, Mozilla, and XEmacs may be controlled from the command line. This module abstracts such communication, finding a running instance or starting one if necessary, queuing and passing requests, and focussing the correct window as required.

Version: 1.2.
Licence: MIT.
Author: Ewan Mellor.
string2.jl
A string manipulation library.

Version: 1.6.
Licence: unknown.
Author: unknown.