From HaskellWiki
Revision as of 20:42, 4 September 2007 by DonStewart (talk | contribs) (update)

Jump to: navigation, search
xmonad: a tiling window manager

Home: http://xmonad.org

Xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximising screen use. All features of the window manager are accessible from the keyboard: a mouse is strictly optional, greatly increasing productivity in X.


The current release is 0.3.

Xmonad is written and extensible in Haskell, and custom layout algorithms, and other extesions, may be implemented by the user in config files. Layouts may be applied dynamically, and separate layouts can be used on each workspace. A guiding principle of the user interface is predictability: users should know in advance precisely the window arrangement that will result from any action, leading to an intuitive user interface.


  • Automatic window tiling and management
  • First class keyboard support: a mouse is unnecessary
  • Full multihead/Xinerama support
  • XRandR support to rotate, add or remove monitors
  • Per-workspace layout algorithms
  • Per-screen non-built in status bars, with arbitrary geometry
  • Dynamic restart/reconfigure preserving workspace state
  • Tiny code base (~500 lines of Haskell)
  • Fast, small and simple. No interpreters, no heavy extension languages

Changes since the previous version

Since 0.1, the following notable features and bug fixes have appeared:

New features

  • XRandR support, for dynamically adding, removing or rotating monitors
  • State-preserving dynamic restart
  • Popup, customisable status bar support
  • Multiple clients may appear in the master pane
  • mod-shift-j/k, to swap windows with their neighbours
  • mod-n, to resize windows
  • User-specified layout algorithms may be written in config files
  • All layouts may be 'mirrored' (rotated)
  • configurable window border size and colour

Design changes

  • Reimplemented core of xmonad with a 'zipper' data type to track focus by construction. We believe this is a first.
  • Use of Neil Mitchell's 'catch' program to verify pattern match safety
  • Use of ReaderT and StateT to partition read-only and modifiable values
  • Custom layout messages handled with open data type simulation
  • More QuickCheck properties

Bug fixes

  • numlock handling is fixed

Links and other information

More information, screenshots, documentation and community resources are available from:


Xmonad is available from hackage, and via darcs. Happy hacking!


The xmonad team

  • Spencer Janssen
  • Don Stewart
  • Jason Creighton

Other contributers

Xmonad has also received patches from Alec Berryman, Chris Mears, Daniel Wagner, David Glasser, David Lazar, David Roundy, Joe Thornber, Miikka Koskinen, Neil Mitchell, Nick Burlett, Robert Marlow, Sam Hughes, Shae Erisson