The cross layout

The cross layout

A new xmonad layout has been added to xmonad-contrib, by Luis Cabellos.

The “cross layout” has a main window in the center of the screen and the rest on the sides of main window, as a cross configuration. It’s similar layout to Circle, but in Cross the focused window always is on top and in the center.



by Wirt Wolff
Provides bindings to cycle windows up or down on the current workspace stack while maintaining focus in place. Bindings are available to:

  • Cycle nearby or nth windows into the focused frame
  • Cycle a window halfway around the stack
  • Cycle windows through the focused position.
  • Cycle unfocused windows.

These bindings are especially useful with layouts that hide some of the windows in the stack, such as Full, TwoPane or Mosaic with three or four panes.

Multimedia keys

Alexey Khudyakov added support for multimedia keys in Emacs-style keybindings (see XMonad.Util.EZConfig).


by Lanny Ripple
runOrCopy from XMonad.Actions.CopyWindow will run the provided shell command unless it can find a specified window in which case it will copy the window to the current workspace. Similar to XMonad.Actions.WindowGo.

Matthew Jones has written a 6 month review of xmonad, XMonad: A tiling window manager written in Haskell.

Some choice quotes:

I’ve been using xmonad for the last 6 months and it is simply beautiful.

Another thing that impresses me is how well it handles multiple displays and multiple desktops. .. the way that xmonad handles this is very elegant.

Since I have been using it it has crashed exactly zero times.

Thanks Matthew, this kind of feedback is inspiring!

One issue that was irritating xmonad users for a while is that if you launch an application which takes some time to load (say, firefox or eclipse) and go to another workspace, program’s windows appears on the workspace you currently are on, not on the workspace the application was launched on.

Eventually, solution is found and implemented in XMonad.Actions.SpawnOn by Spencer Janssen (a similar solution was independently implemented by Daniel Schoepe). To get it working you need to add one action to your main function, add a ManageHook and replace all spawn functions you use in the keybindings with spawnHere. (See module documentation for details.)

The new module also contains replacement for Shell prompt with the same semantics. As another bonus, you can launch an application on some predefined (rather than current) workspace.

A new xmonad layout has been committed to the xmonad-contrib repository, courtesy Norbert Zeh. Here’s how he describes it:

After using GridVariants.TallGrid for a while, I got fed up with the fact that the meaning of columns and rows get exchanged when TallGrid is rotated using Mirror (as well as with other small nuisances).

The attached patch contains a new layout, GridVariants.SplitGrid, which allows the orientation of the split between the master and the slave grid to be specified as a parameter, thus doing away with the need to use Mirror or Reflect with this layout.

What SplitGrid and TallGrid do should be achievable using the standard Grid layout plus a layout combinator.  However, the automatic assignment of clients to the master/slave grids would require more plumbing in xmonad.hs, which is why I opted for writing this as a separate layout.

xmonad on a quad headed display. Very cool. Courtesy @nickaugust

From now on we are going to announce new extensions from the xmonad-contrib library in this blog.
Here are the first contributions of 2009. Try them out!


by Carsten Otto

A layout similar to Tall but with three columns, where the main window is in the middle. With 2560×1600 pixels this layout can be used for a huge main window and up to six reasonable sized slave windows.


by Ilya Portnov

CenteredMaster consists of two layout modifiers. centerMaster places one (master) window at center of screen, on top of other windows. All other windows are managed by base layout. For example, with

centerMaster Grid

one will get something like this screenshot.

topRight layout modifier is similar, but places master window in top right corner instead of center.


by Adam Vogt

A mosaic layout based on MosaicAlt. The position of a window in the stack determines its position and layout, and the overall tendency to make wide or tall windows can be changed. In contrast to MosaicAlt, Mosaic allows changing window sizes by relocating them with Layout.WindowNavigation.