Xmonad is a window manager for the X Window System. It is written in the functional programming language Haskell.

In March 2007, xmonad was presented as a tiling -based window manager. He therefore organized the window illustrated manner of tiles so that they do not overlap. In addition, the developer, to create a graphical interface in which users productive work with the windows without using the mouse it is possible tried. Many Linux distributions provide xmonad directly through their package management systems, and also for FreeBSD, NetBSD, OpenBSD, and Mac OS X it is available.


Originally oriented xmonad in terms of functionality and operation of dwm, such as the default key assignment. However, it now contains features that are not available for dwm users. These are, for example, a configurable for each work area layout, tile reflection, storing the state mirrors the layout and gnome - support and status bars for each screen (X- abstraction). It can be customized by editing an external configuration file that can be reloaded during operation.

Enhancements to the core system, such as the emulation of other window manager and unusual layout algorithms such as windows partition based on the Fibonacci spiral, have been implemented by the community and are available as a library.

In addition to focusing on the waiver of the mouse, use the xmonad developers often semi-formal methods and program derivation, in order to increase the reliability and reduce the number of source code lines. With version 0.7, this was reduced to below 1200 and window manager settings, such as the behavior of the focus will now be controlled by the Haskell library QuickCheck. This focus makes xmonad unusual in several respects. It is also the first window manager, which uses the zipper data structure for automatically organizing the focus.

Xmonad makes use of Haskell features and tools like QuickCheck, GHC extensions like pattern guards, monads, monad transformers, zippers, and the Cabal package system, and Haskell bindings to Xlib and xft fonts. It is planned to tie back to XCB when the Haskell bindings are released. Its core has been tested for safety in terms of pattern matching, which further contributes to the reliability.


The innovations of xmonad have also taken influence on other tiling -based window manager. So dwm "urgency hooks" took over from xmonad and Xinerama support ( for multi-head systems ) since the 4.8 release. In addition, an inspired by xmonad patch that adds dwm two layouts, arrange the windows according to the Fibonacci sequence exists.