Ideal Window Manager

Submitted by ormiret on Sat, 21/07/2007 - 03:21.

I have yet to find a window manager that doesn't in some way annoy me. I've decided to make a list of the things I want from a window manager. If anyone knows of WM that meets these requirements (or comes close and is easily hackable) I would be very interested, please tell me about it.

The requirements are:

  • Tiling window placement I prefer this method as default.
  • Support for "traditional" areas I want to have an area in the tiled layout within which windows are managed in the traditional manner for apps that don't work well in tiled layout (e.g. The GIMP). I haven't yet found a WM that does this and tiling
  • Layouts I really like the layouts concept in ratpoison as opposed to the more common workspaces as it lets the same window appear in multiple layouts.
  • Scriptable There should be some interface from which other programs can manipulate windows. I've played with Beryl's dbus interface and ratpoison's external command interface (call ratpoison with commands as arguments and the commands get applied to the already running ratpoison).

I'm sure there are other requirements, and I will add them to the list as I remember/discover them.

I've considered a couple of approaches to making my perfect window manager. Ratpoison is only lacking the traditional areas, but I've baulked at adding such a feature as it looks like a lot of work: it pretty much needs a whole new WM built for such areas (if you can think of a way to integrate an existing WM for this purpose without too much work please do tell). The other approach I considered was adding tiling support to Beryl. Beryl already has grouping features and adding to that to allow the tiling of a group and then it's treatment as one window by the rest of the WM would get most of the features I want (the ability to have one window show up in multiple places would be the only one missing). I haven't done this yet as it is still a bit of work and Beryl is sufficiently young to provide a fast moving target (technically I don't think it even exists anymore, having become compiz fusion) that might mean my addition would need a lot of maintenance to keep working with later releases.

Do you know of a window manager that does everything I want? Can you think of a better way to build one?

Update: I have now found xmonad. It comes very close to meeting all of my requirements. It does tiling very well, although it uses workspaces rather than layouts there is an extension to clone windows so they can appear in multiple workspaces, it has a usable floating layer (though I'd like the ability to restrict it to a subset of the screen), I've not yet tried writing my own code to change things but doing so looks like a good excuse to have a proper play with Haskell.

( categories: )