Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

xmonad

From Wikipedia, the free encyclopedia
Dynamic window manager for X Window System
xmonad
XMonad in tiling mode with two URXVT terminals and pcmanFM open
xmonad in tiling mode
Original authorsSpencer Janssen, Don Stewart, Jason Creighton
Initial releaseMarch 6, 2007; 18 years ago (2007-03-06)[1]
Stable release
0.18.0[2] Edit this on Wikidata / 3 February 2024
Written inHaskell
Operating systemPOSIX compatible
PlatformCross-platform; requires anX Window System andGHC
Size56 KB (source code)[3]
Available inEnglish
TypeWindow manager
LicenseBSD 3-clause
Websitexmonad.org Edit this on Wikidata
Repository
xmonad'sXinerama support: tiling on three screens simultaneously.
xmonad intiling mode

xmonad is adynamic window manager (tiling) for theX Window System, noted for being written in thefunctionalprogramming languageHaskell.[4][5]

Window manager

[edit]

Begun in March 2007, version 0.1 was announced[6] in April 2007 as 500lines of Haskell[7] (which have since grown to 2000 lines). xmonad is atiling window manager, akin todwm,larswm, andStumpWM. It arranges windows in a non-overlapping pattern, and enables managing windows without using amouse. xmonad ispackaged and distributed on a wide range ofUnix-likeoperating systems, including manyLinux distributions, andBerkeley Software Distribution (BSD) systems.

While originally aclone 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 tilingwindow managers: dwm has borrowed "urgency hooks" from xmonad,[11] has also includedXinerama support (formultihead displays) withrelease 4.8, andpatches exist to reimplement xmonad'sFibonacci spiral layout.[12]

Haskell project

[edit]
Further information:Haskell

In 2023 theman page stated:

By utilising the expressivity of a modern functional language with a richstatic type system, xmonad provides a complete, featureful window manager [...], with an emphasis on correctness and robustness. Internal properties of the window manager are checked using a combination of static guarantees provided by thetype system, and type-basedautomated testing. A benefit of this is that the code is simple to understand, and easy to modify.[13]

Since xmonad's inception, when its smallsource code size of 500 lines of code was advertised, it has grown to about 2,000 lines as of 2023[update].

Extensions to the core system, including emulation of other window managers, and unusual layout algorithms, such as windowtiling based on theFibonacci spiral—have been implemented by the active community[14] and are available as a library.[15]

Along with obviating the need for a mouse,[16] the xmonad developers make heavy use of semi-formal methods andprogram derivation for improving reliability and enabling a total line of code count less than 1200, as of version 0.7; window manager properties (such as the behavior of window focus) are checked through use ofQuickCheck.[17] This emphasis makes xmonad unusual in a number of ways; besides being the first window manager written in Haskell, it is also the first to use thezipperdata structure for automatically managingfocus, and its core has been proven to be safe with respect topattern matches,[18] contributing further to reliability. The developers write:

xmonad is a tiling window manager for the X Window system, implemented, configured and dynamically extensible in Haskell. This demonstration presents the case that software dominated byside effects can be developed with the precision and efficiency we expect from Haskell by utilising purely functional data structures, an expressivetype system, extended static checking and property-based testing. In addition, we describe the use of Haskell as an application configuration and extension language.[19]

The code is separated into side-effect free code, and a thin wrapper for the side-effects.[20] According to Alejandro Serrano Mena, there are two ways to implementdomain-specific languages for actions in Haskellapplications andlibraries: "developing acombinator library" or "rolling your ownmonad", with xmonad being a successful example of the latter.[21]xmonad was regarded as one of the most well known Haskell projects in a 2013 functional programming book.[5]

Reception

[edit]

Linux Magazine included xmonad in a list of "My Top Resources of 2009".[22] In 2012, How-ToGeek described xmonad as having good, but complex, ability to be configured,[23] and it was included in a 2013 list of eightdesktop environments forLinux.[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 byNetwork World,[4] and in MakeUseOf xmonad was reviewed positively compared toOpenbox.[26]

In 2016Ars Technica said xmonad andAwesome had more advanced tiling ability thanCinnamon.[27] In 2017 it was described as powerful, with application as a window manager forbig data,[28] while in an article onopensource.com on the other hand, dwm was chosen over xmonad.[29] ATechRadar 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 ofsource lines of code of the Xmonad application, the use of thepurely functional programming languageHaskell, and recorded use of a rigoroussoftware testing procedure, it is sometimes used as a baseline application in other research projects. This has included re-implementing xmonad using theRocqproof assistant,[31] a determination xmonad is animperative program,[32] and studies ofpackage management relating to aLinux distributionNixOS that is based on the package managerNix.[33]

See also

[edit]

References

[edit]
  1. ^"Initial import: xmonad/xmonad@b2c1430".GitHub.
  2. ^"Release 0.18.0". 3 February 2024. Retrieved20 February 2024.
  3. ^"xmonad: download".suckless.org.Archived from the original on 2012-12-26. RetrievedDecember 17, 2012.
  4. ^abLunduke, Bryan (15 May 2013)."10 amazing Linux desktop environments you've probably never seen".Network World. xmonad. Archived fromthe original on 26 May 2018.
  5. ^abOhlig, 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. Retrieved2021-08-30.
  7. ^"Xmonad: a Tiling Window Manager Written in Haskell".OSNews. 2007-05-22.Archived from the original on 2008-04-11. Retrieved2007-09-23.
  8. ^"Keyboard-Driven Environments Open a New Window".OSNews. 2007-05-31.Archived from the original on 2007-06-04. Retrieved2007-05-31.
  9. ^"xmonad 0.4 Released".OSNews. 2007-10-19.Archived from the original on 2007-12-22. Retrieved2007-12-23.
  10. ^Through a combination of swiftly re-compiling and thenexecing the new xmonad binary; see"Haskell Weekly News: April 27, 2007". Haskell Weekly News. 2007-04-27. Archived fromthe original on 2007-05-29. Retrieved2007-05-23.
  11. ^See thedeveloper discussionArchived 2018-09-18 at theWayback Machine on the dwm mailing list
  12. ^Suckless.org: Fibonacci layouts patchArchived 2013-04-13 at theWayback Machine to dwm
  13. ^"Manpage of xmonad". xmonad.org. 2021-10-27.Archived from the original on 2023-08-13. Retrieved2023-09-01.
  14. ^xmonad users generate significant traffic in the#xmonadArchived 2007-12-29 at theWayback MachineInternet Relay Chat (IRC) channel and the xmonad mailing list; also, there are many commits to the extension library from non-core devs (see thexmonad statistic pageArchived 2007-12-23 at theWayback Machine)
  15. ^"xmonad: Contributed code". xmonad.org. 2007-05-22.Archived from the original on 2007-09-16. Retrieved2007-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. Retrieved12 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. Retrieved27 September 2018.
  18. ^Mitchell, Neil (9 May 2007)."Neil Mitchell's Haskell Blog: Does XMonad crash?".Archived from the original on 2007-05-14. Retrieved2007-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-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. Retrieved2018-09-17.
  30. ^"Best Linux desktop of 2018".TechRadar.Future plc. 2018-01-15.Archived from the original on 2018-09-18. Retrieved2018-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

[edit]

Further reading

[edit]

External links

[edit]
Wikimedia Commons has media related toXmonad.
Desktop
environments

(comparison)
GTK-based
Qt-based
Motif-based
Other
Graphical
shells
X window
managers

(comparison)
Compositing
Stacking
Tiling
Wayland
compositors
Related
Haskell programming
Software
Implementations
(features)
Dialects
Electronic
design
Libraries
Package managers
Windowing systems
Web frameworks
Book
Community
Eponym
Italics= discontinued° =Open-source software
BookCategories:FamilySoftware
Retrieved from "https://en.wikipedia.org/w/index.php?title=Xmonad&oldid=1311883733"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp