Sawfish is an extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level WM functions are implemented in Lisp for future extensibility or redefinition. These are some of the features that set Sawfish apart from other window managers:
- Event hooking: For many events (moving windows etc.) you can customize the way Sawfish will respond.
- Window matching: When windows are created you can match them to a set of rules and automatically perform actions on them.
- Flexible theming: Sawfish allows for very different themes to be created and a variety of third-party themes are readily available.
emerge --ask x11-wm/sawfish
There are two ways; using the configurator GUI, or preparing lisp code. The GUI can be run by middle-clicking background -> "Customize". Most customizations similar to other window managers can be done through GUI.
For customizations by lisp, first understand that in the startup, three files are read, in the order: sawfish-defaults, ~/.sawfish/custom, .sawfishrc.