xmonad's Xinerama support: tiling on three screens simultaneously.
xmonad in tiling mode

xmonad is a dynamic window manager (tiling) for the X Window System, noted for being written in the functional programming language Haskell.[4][5]

Window manager

Begun in March 2007, version 0.1 was announced[6] in April 2007 as 500 lines of Haskell[7] (which have since grown to 2000 lines). xmonad is a tiling window manager, akin to dwm, larswm, and StumpWM. It arranges windows in a non-overlapping pattern, and enables managing windows without using a mouse. xmonad is packaged and distributed on a wide range of Unix-like operating systems, including many Linux distributions, and Berkeley Software Distribution (BSD) systems.

While originally a clone of dwm (derivative in areas such as default keybindings), xmonad now supports features unavailable to dwm users[8][9] such as per-workspace layout, tiling reflection, state preservation, layout mirroring, GNOME support and per-screen status bars; it can be customised by modifying an external configuration file and 'reloaded' while running.[10] xmonad features have begun to influence other tiling window managers: dwm has borrowed "urgency hooks" from xmonad,[11] has also included Xinerama support (for multihead displays) with release 4.8, and patches exist to reimplement xmonad's Fibonacci spiral layout.[12]

Haskell project

In 2023 the man page stated:

Reception

Linux Magazine included xmonad in a list of "My Top Resources of 2009".[22] In 2012, How-To Geek described xmonad as having good, but complex, ability to be configured,[23] and it was included in a 2013 list of eight desktop environments for Linux.[24] Lifehacker wrote that the basic operations of xmonad's user interface can be taught using a small set of instructions.[25] A high level of customisation and speed were noted by Network World,[4] and in MakeUseOf xmonad was reviewed positively compared to Openbox.[26]

In 2016 Ars Technica said xmonad and Awesome had more advanced tiling ability than Cinnamon.[27] In 2017 it was described as powerful, with application as a window manager for big data,[28] while in an article on opensource.com on the other hand, dwm was chosen over xmonad.[29] A TechRadar review of the "Best Linux desktop of 2018" said "If there's one desktop environment that stands out from all the others we have here, it's this one."[30]

Due to the small number of source lines of code of the Xmonad application, the use of the purely functional programming language Haskell, and recorded use of a rigorous software testing procedure, it is sometimes used as a baseline application in other research projects. This has included re-implementing xmonad using the Rocq proof assistant,[31] a determination xmonad is an imperative program,[32] and studies of package management relating to a Linux distribution NixOS that is based on the package manager Nix.[33]

See also

References

  1. ↑ "Initial import: xmonad/xmonad@b2c1430". GitHub.
  2. ↑ "Release 0.18.1". 7 March 2026. Retrieved 7 April 2026.
  3. ↑ "xmonad: download". suckless.org. Archived from the original on 2012-12-26. Retrieved December 17, 2012.
  4. 1 2 Lunduke, Bryan (15 May 2013). "10 amazing Linux desktop environments you've probably never seen". Network World. xmonad. Archived from the original on 26 May 2018.
  5. 1 2 Ohlig, Jens; Mehnert, Hannes; Schirmer, Stefanie (24 September 2018). Das Curry-Buch – Funktional programmieren lernen mit JavaScript. O'Reilly Germany. p. 177. ISBN 978-3868993691 – via Google Books.
  6. ↑ Janssen, Spencer (2007-04-22). "Announce: xmonad 0.1". Haskell-cafe (Mailing list). Archived from the original on 2021-08-30. Retrieved 2021-08-30.
  7. ↑ "Xmonad: a Tiling Window Manager Written in Haskell". OSNews. 2007-05-22. Archived from the original on 2008-04-11. Retrieved 2007-09-23.
  8. ↑ "Keyboard-Driven Environments Open a New Window". OSNews. 2007-05-31. Archived from the original on 2007-06-04. Retrieved 2007-05-31.
  9. ↑ "xmonad 0.4 Released". OSNews. 2007-10-19. Archived from the original on 2007-12-22. Retrieved 2007-12-23.
  10. ↑ Through a combination of swiftly re-compiling and then execing the new xmonad binary; see "Haskell Weekly News: April 27, 2007". Haskell Weekly News. 2007-04-27. Archived from the original on 2007-05-29. Retrieved 2007-05-23.
  11. ↑ See the developer discussion Archived 2018-09-18 at the Wayback Machine on the dwm mailing list
  12. ↑ Suckless.org: Fibonacci layouts patch Archived 2013-04-13 at the Wayback Machine to dwm
  13. ↑ "Manpage of xmonad". xmonad.org. 2021-10-27. Archived from the original on 2023-08-13. Retrieved 2023-09-01.
  14. ↑ xmonad users generate significant traffic in the #xmonad Archived 2007-12-29 at the Wayback Machine Internet Relay Chat (IRC) channel and the xmonad mailing list; also, there are many commits to the extension library from non-core devs (see the xmonad statistic page Archived 2007-12-23 at the Wayback Machine)
  15. ↑ "xmonad: Contributed code". xmonad.org. 2007-05-22. Archived from the original on 2007-09-16. Retrieved 2007-05-23.
  16. ↑ Mitchell, Neil (June 2008). "6.5.5". Transformation and Analysis (PDF) (PhD). University of York. Archived (PDF) from the original on 12 September 2018. Retrieved 12 September 2018.
  17. ↑ Hu, Zhenjiang; Hughes, John; Wang, Meng (2015). "How functional programming mattered" (PDF). National Science Review. 2 (3): 350–351. doi:10.1093/nsr/nwv042. ISSN 2095-5138. Archived (PDF) from the original on 2018-07-23. Retrieved 27 September 2018.
  18. ↑ Mitchell, Neil (9 May 2007). "Neil Mitchell's Haskell Blog: Does XMonad crash?". Archived from the original on 2007-05-14. Retrieved 2007-05-17.
  19. ↑ Stewart & Janssen, 2007
  20. ↑ Warden, Shane; Biancuzzi, Federico (2009). Masterminds of Programming: Conversations with the Creators of Major Programming Languages. O'Reilly Media. p. 181. ISBN 978-0596515171. Archived from the original on 2018-09-19. Retrieved 2018-09-18.
  21. ↑ Mena, Alejandro Serrano (5 March 2014). Beginning Haskell: A Project-Based Approach. Apress. p. 385. ISBN 9781430262510. Archived from the original on 2018-09-24. Retrieved 2018-09-24 – via Google Books.
  22. ↑ Zawodny, Jeremy (2009-12-06). "My Top Resources of 2009". Linux Magazine. Archived from the original on 2018-09-23. Retrieved 2018-09-23.
  23. ↑ Hoffman, Chris (2012-05-24). "How to Use Xmonad, a Tiling Window Manager for Linux". How-To Geek. Archived from the original on 2018-09-18. Retrieved 2018-09-17.
  24. ↑ Hoffman, Chris (2013-05-18). "Linux Users Have a Choice: 8 Linux Desktop Environments". How-To Geek. Archived from the original on 2017-07-13. Retrieved 2018-09-24.
  25. ↑ Goerzen, John (2013-01-08). "I Raised My Kids On the Command Line...and They Love It". Lifehacker. Univision Communications. Archived from the original on 2018-09-18. Retrieved 2018-09-17.
  26. ↑ Stieben, Danny (2018-09-18). "Need A Fresh Desktop Environment for Linux? Try Openbox Or xmonad". makeuseof.com. Archived from the original on 2017-11-23. Retrieved 2018-09-24.
  27. ↑ "Mint 18 review: "Just works" Linux doesn't get any better than this". Ars Technica. 2016-08-04. Archived from the original on 2018-09-17. Retrieved 2018-09-17.
  28. ↑ Nita, Stefania Loredana; Mihailescu, Marius (14 September 2017). Practical Concurrent Haskell: With Big Data Applications. Apress. pp. 40–41. ISBN 978-1484227800 – via Amazon.
  29. ↑ "Top 4 reasons I use dwm for my Linux window manager". Opensource.com. Red Hat. 2017-07-18. Archived from the original on 2018-09-18. Retrieved 2018-09-17.
  30. ↑ "Best Linux desktop of 2018". TechRadar. Future plc. 2018-01-15. Archived from the original on 2018-09-18. Retrieved 2018-09-17.
  31. ↑ Swierstra, Wouter (13 September 2012). "xmonad in Coq (Experience Report) Programming a Window Manager with a Proof Assistant". In Voigtländer, J. (ed.). Haskell '12 Proceedings of the 2012 Haskell Symposium. ICFP 2012 The 17th ACM SIGPLAN International Conference on Functional Programming. Copenhagen, Denmark: Association for Computing Machinery. pp. 131–136. ISBN 978-1-4503-1574-6.
  32. ↑ Lippmeier, Ben (May 2010). Type Inference and Optimisation for an Impure World (PDF) (PhD). Australian National University. pp. 45–46. Archived from the original on 2018-09-27.
  33. ↑ Dolstra, Eelco; LÖH, Andres; Pierron, Nicolas (November 2010). "NixOS: A Purely Functional Linux Distribution". Journal of Functional Programming. 20 (5–6): 577–615. doi:10.1017/S0956796810000195. ISSN 0956-7968.

Works cited

Further reading