So I got a bit bored, and ended up writing a Sawfish module to provide a Quake-like undecorated shaded console, much like what Greenfly boasts he’s done with Enlightenment. Basically, it will recognize a terminal with a certain X window class set, turn off all decorations, place it along the top edge of the screen and shade/hide it. When the user hits a keystroke (customizable via the sawfish-ui configuration tool), the terminal is unshaded into view. Hitting it again will shade it again. (I use aterm with pseudo-translucency, darkened somewhat.)
Using it is fairly easy — you download it, gunzip it, drop it into the ~/.sawfish/lisp directory, add one line into your ~/.sawfishrc (simply (require 'quake-console)), and restart Sawfish (no logout necessary). Then you fire up sawfish-ui and add a binding for ‘Quake console shade toggle’ (I personally use Alt-`). Finally, you can run your terminal emulator, telling it to use the class XTerm/QuakeConsole. (e.g. with aterm, rxvt or xterm, you run aterm -name QuakeConsole along with any other options you want.)
When the window appears, it’ll be without frame/border/resizebar/etc., and will move and disappear in a second or so. Hitting the keys you configured to do the shading will unshade it. Hitting the keys again will shade it. It’s a fairly cool thing to have, especially if (like me) you’re confined to a low resolution and have a gazillion windows all over the place, and you want to quickly despatch a command.
I have a Flash movie of the behavior (created with vnc2swf that Anders reviewed for the 2003/11/26 Linux.Ars, in conjunction with x0rfbserver from the HeXoNet rfb package which behaves much like WinVNC does). The awful quality can probably be attributed to the fact that 400 MHz K6-2s are rather slow — just watch the CPU meter in GKrellM.
And here’s a screenshot (click for full size):
I also modified a module that provides Window Maker-compatible docking ability (original here, so I could get a Freedesktop.org-compatible notification area with the help of peksystray, which is a dockapp that provides space for up to four GNOME-style tray icons. GKrellM starts up in ‘withdrawn’ (dockable) mode if you start it with the -w switch, so this would be handy.
Unfortunately, peksystray is still very much a work in progress, so it occupies a full 64×64 space, even though it uses only the top 16 pixel rows. Also, the original dock module assumed all dockapps to be 64×64 at maximum, and GKrellM is a lot taller than that. So I modified the way the Sawfish module positions dockapps, getting it to use the dockapps’ own dimensions instead. The result is something that stacks much more like a dock. (It still doesn’t have any decorations for the dockapps, though — fairly rudimentary. Still it’s better than Sawfish’s default behavior, which is to treat withdrawn windows as regular windows.) You can get the modified module off Thorin.
In writing/modifying Sawfish modules, I relearned Lisp (pretty neat, actually), and got a pretty decent insight into just how extensible Sawfish is. It’s remarkably simple to make behavioral changes and add features to Sawfish. And despite all this built-in extensibility (and the fact that much of Sawfish essentially exists as rep Lisp bytecode), it’s pretty lightweight and fast. The *box window managers can only wish they were as cool as Sawfish.
I also fixed the breakage in my first post seraph was bitching about. :p
Updated: replaced gimli references with thorin.
