Jérôme Belleman
Home  •  Tools  •  Posts  •  Talks  •  Travels  •  Graphics  •  About Me

Layouts available for xmonad

3 Dec 2011

The xmonad tiling window manager is so-called dynamic as it manages window placement with layouts. Here's a small list of common ones to help you choose from.

1 Layouts

1.1 Tall

tall.png

This layout is the first one of the default set. Not much to say there, one master area on the left for a single large window, a slave area on the right for several smaller ones. In practice, that will be a very useful layout, which is why it's offered as a default one.

1.2 Full

This layout is provided as third layout of the default set and, rather unremarkably, just fills up the screen. It's probably best replaced by something like Tabbed, for the sake of seeing which are the next, previous and generally available windows in the workspace.

1.3 Accordion

accordion.png

There are no parameters available with this layout, but could be useful when combined with another one.

1.4 Circle

circle.png

While this layout does certainly look nice, it doesn't appears to be much use. Nothing seems to be resizeable, on top of that.

2 Layout Modifiers

2.1 Mirror

mirrortall.png mirroraccordion.png

Provided as the second layout of the default set, it's not advertised as such and I've traditionally only used it with Tall. It should probably be regarded as a layout modifier. A strong indication of that is when it's for instance used with Accordion.

2.2 AutoMaster

automastergrid.png

It would be useful if it wasn't so hard to understand. It seems to split the workspace into a master and a slave area, regardless of what the modified layout had in mind (even Full abides to it). In the given example, Grid applies only to the lower area, where the upper area has a master for itself.

The way windows are arranged horizontally may not necessary be desirable, and using Mirror to overcome this does the business. Still, it wouldn't do however for a convenient dual-pane layout because moving from one area to another triggers reordering in the slave area.

AutoMaster automatically increases the slave area as the number of windows grows. Still, you can manually modify their sizes even with layouts which would normally not allow for this (e.g. Grid).

2.3 BorderResize

While BorderResize certainly provides resize cursors near the window borders, you want be able to change their sizes that way, even if the layout would have allowed for master/slave size changes. It won't do anything out of the box with floating windows either. That's probably because common windows such as those met in Tall don't react to that so-called SetGeometry message.

2.4 WindowArranger

WindowArranger allows any window in any layout to be resized in any way, even if these are tiled (i.e. not floating).

It's worth noting that it seems possible to apply the modifier to all layouts in one go by doing, say, layoutHook = windowArrangeAll myLayout1. I wonder if this can generally be done with other modifiers too. Well, I suppose that's what we've always been doing with avoidStruts and smartBorders.

2.5 CenteredMaster

centertall.png toprighttall.png

The name of the centerMaster and topRightMaster modifiers is self-explanatory and their use becomes even clearer from the given examples. What isn't entirely clear to me though is who would want a modifier which allows a window to partially hide other windows.

It's probably worth noting that increasing the number of windows in the master area doesn't increase the number of windows brought to the front.

3 References