Sawfish 1.6.3, an extensible window manager using a Lisp-based scripting language has been released.
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:
* Powerful key-binding: Virtually every functionality provided by Sawfish can be bound to keys (or mouse buttons).
* 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.
Sawfish was formerly known as Sawmill but then renamed to Sawfish due to pending patents on the name Sawmill. It's original Author is John Harper who got employed by Apple which prohibited him to continue working on Sawfish (and librep/rep-gtk). In Mid 2007 Janek 'The Re-Animator' Kozicki overtook the development of Sawfish. In Mid 2008 Christopher 'Flashrider' Bratusek overtook development of librep and rep-gtk, followed by Sawfish and SawfishPager in December 2008.
Homepage & Resources
Our Homepage is a Wiki, so you can improve it. Also if you have themes, screenshots, scripts, snippets or patches to contribute, simply upload them to the corresponding section. URL: http://sawfish.wikia.com/
Mailinglist: sawfish-list on GNOME
IRC: #sawfish on Freenode
Tar/XZ : http://download.tuxfamily.org/sawfish/sawfish/sawfish-1.6.3.tar.xz
1.6.3 "Hava Nagila"
- In tabbed-windows the left/right end is no longer outside the
window, if that is too small [Fuchur]
- Unsupported option `ignore-window-input-hint' is deleted
which has been invalid for long. [Teika kazura]
- Honor the user option `maximize-raises' in
`maximize-window-fullxinerama', too, not just in
maximize-window [Nolan Leake]
- More robustness in applications menu [Teika Kazura, Matthew
Before it broke for 'R' (statistics software), and whitespace
handling didn't follow the specification.
Some *.desktop files are not ignored any more either, i.e.,
leading empty lines and comments are allowed.
- Allow compilation with -DDEBUG flag passed [Alexey I. Froloff]
* New Features
- XRandR events (eg resolution changes) call the new hook
`randr-changed-notify-hook' [Daniel M. German]
See *Note RandR and Xinerama::.
- Tabbed windowing system improvements [Fuchur]
+ Support for transient tab-frames
+ New frame classes:
x tab-s (side tab)
x tab-ls (side tab, left/bottom end)
x tab-rs (side tab, right/top end)
+ Tabgroups now support a set of new properties and
actions: `type', `set-frame-style', `fixed-position',
`iconify'. In addition, new tabs gain those properties
from their parent window.
- New command `display-window-position' [Teika kazura]
User chooses a window by cursor and click, and it prints its
position and size in a popup. Also available as a function,
defined in `sawfish.wm.util.display-wininfo'.
- New function `window-pid' [Teika kazura]
It returns the process ID of a window. (*note Window
- Window instance name is now accessible [Teika kazura]
Technically, the window class consists of "instance" and
"class", but only the latter was returned previously by the
function `window-class'. Now with the new optional argument,
the instance is returned too. (*note Window Attributes:
- Customizable lisp directory [Teika kazura]
User can add lisp directories to be read with the
environmental variable `SAWFISH_USER_LISP_DIR'. Its value is
directories separated by colon, like `PATH', and prepended to
`load-path'. If not set, `~/.sawfish/lisp' is assumed. For
example, if you define a module `sawfish.wm.super-hack', then
it can be read from
User can override system lisp files, too. For example, if
there is `~/.sawfish/lisp/sawfish/wm/windows.jl', then it
defines `sawfish.wm.windows', instead of the installed one.
(But this can easily break your Sawfish startup.) In fact, it
was possible for some lisp files, but now it's guaranteed for
* Other Changes
- Info improvements [Teika kazura]
+ "Windows" chapter is partly revised. Function
`display-window' is documented. Difference between
`window-wants-input-p' and `window-really-wants-input-p'
is described. Short description on the root window.
+ In past few versions we made more changes which were not
described in the news, including clarification in
viewport, workspace and event, and window matching lisp
+ Added a faq item on multi-head and workspace.
+ Edition number and the date of last change are dropped
from the info. We now edit the info often, so they are
not so much meaningful.
- Pressing the lock-button does the state-change of the window
No theme shipped with Sawfish does have the lock-button yet,
- Make xinerama an optional dependency [original patch from