Remember Sawfish? Well, if you’re a veteran Gnome user you might remember it. It used to be Gnome’s default window manager back in the days. Sawfish looked quite simple on the outside, rendering a nice theme for window decoration and getting out of the way. Under the hood, however, it had a sophisticated LISP-programmable window matching engine, which allowed you to discover what new windows are being shown and do all kinds of things to them.
Speed forward a few years. Gnome ditched Sawfish in favour of Metacity, a simple, GTK-based, no-frills window manager (and with the latest Ubuntu you even get the singing and dancing, Enlightenment-syndrome inflicted Compiz, which makes your windows look like they’re made of jellow). There’s a lot to be said for using standard components, they’re stable and supported, for example, but for years I did feel that I’m missing the flexibility of Sawfish.
Take, for example, Firefox and Emacs. I spend considerable time in both of them. I usually open one instance of each at the beginning of every session, maximize it and switch between the buffers/tabs within. For a window that’s always maximized, it seems a bit unnecessary to draw a border. On my small laptop screen it’s downright wasteful. With Sawfish I could easily tell the border to go away, but with Metacity I just have to put up with the chunky, useless border on top of my window.
sudo aptitude install devilspie
Enter Devil’s Pie. Devil’s Pie is a complement to the window manager that fills the void left by Sawfish. It works in the background and reads LISP scripts that allow you to match new windows and do things to them.
; .devilspie/fullscreen-firefox.ds
; maximize the main firefox window and
; remove the window decoration.
(if (matches (window_name) ".* - Mozilla Firefox")
(undecorate maximize))