fbpx
Wikipedia

xmonad

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

xmonad
xmonad in tiling mode
Original author(s)Spencer Janssen, Don Stewart, Jason Creighton
Initial releaseMarch 6, 2007; 16 years ago (2007-03-06)[1]
Repository
  • github.com/xmonad/xmonad
Written inHaskell
Operating systemPOSIX-compatible
PlatformCross-platform; requires the X Window System and GHC
Size56 KB (source code)[2]
Available inEnglish
TypeWindow manager
LicenseBSD-3-Clause
Websitexmonad.org 
xmonad's Xinerama support: tiling on three screens simultaneously.
xmonad in tiling mode

Window manager

Begun in March 2007, version 0.1 was announced[5] in April 2007 as 500 lines of Haskell.[6] 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 the mouse. xmonad is packaged and distributed on a wide range of Unix-like operating systems, such as a large number of Linux distributions, and BSD systems.

While originally a clone of dwm (derivative in areas such as default keybindings), xmonad now supports features not available to dwm users[7][8] 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.[9] xmonad features have begun to influence other tiling window managers: dwm has borrowed "urgency hooks" from xmonad,[10] has also included Xinerama support (for multihead displays) with release 4.8, and patches exist to reimplement xmonad's Fibonacci layout.[11]

Haskell project

In 2007 the man page stated:

By utilising the expressivity of a modern functional language with a rich static type system, xmonad provides a complete, featureful window manager in less than 500 lines of code, with an emphasis on correctness and robustness. Internal properties of the window manager are checked using a combination of static guarantees provided by the type system, and type-based automated testing. A benefit of this is that the code is simple to understand, and easy to modify.[12]

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

In addition to obviating the need for the mouse,[15] the xmonad developers make heavy use of semi-formal methods and program 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 of QuickCheck.[16] 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 the zipper data structure for automatically managing focus, and its core has been proven to be safe with respect to pattern matches,[17] 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 by side effects can be developed with the precision and efficiency we expect from Haskell by utilising purely functional data structures, an expressive type system, extended static checking and property-based testing. In addition, we describe the use of Haskell as an application configuration and extension language.[18]

The code is separated into side-effect free code, and a thin wrapper for the side-effects.[19] According to Alejandro Serrano Mena, there are two ways of implementing domain-specific languages for actions in Haskell applications and libraries: "developing a combinator library" or "rolling your own monad", with xmonad being a successful example of the latter.[20] xmonad was regarded as one of the most well known Haskell projects in a 2013 functional programming book.[4]

Reception

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

In 2016 Ars Technica said xmonad and Awesome had more advanced tiling ability than Cinnamon.[26] In 2017 it was described as powerful, with application as a windows manager for big data,[27] while in an article on opensource.com on the other hand, dwm was chosen over xmonad.[28] 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."[29]

Due to the small number of lines of code of the Xmonad application, the use of the purely functional programming language Haskell, and recorded use of a rigorous testing procedure it is sometimes used as a baseline application in other research projects. This has included re-implementation of xmonad using the Coq proof assistant,[30] a determination xmonad is an imperative program,[31] and studies of package management relating to the NixOS linux distribution.[32]

See also

References

  1. ^ "Initial import. · xmonad/xmonad@b2c1430". GitHub.
  2. ^ "xmonad : download". suckless.org. from the original on 2012-12-26. Retrieved December 17, 2012.
  3. ^ a b Lunduke, Bryan (15 May 2013). "10 amazing Linux desktop environments you've probably never seen". Network World. xmonad. from the original on 26 May 2018.
  4. ^ a b 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.
  5. ^ Janssen, Spencer (2007-04-22). "ANNOUNCE: xmonad 0.1". Haskell-cafe (Mailing list). from the original on 2021-08-30. Retrieved 2021-08-30.
  6. ^ "Xmonad: a Tiling Window Manager Written in Haskell". OSNews. 2007-05-22. from the original on 2008-04-11. Retrieved 2007-09-23.
  7. ^ "Keyboard-Driven Environments Open a New Window". OSNews. 2007-05-31. from the original on 2007-06-04. Retrieved 2007-05-31.
  8. ^ "xmonad 0.4 Released". OSNews. 2007-10-19. from the original on 2007-12-22. Retrieved 2007-12-23.
  9. ^ Through a combination of swiftly re-compiling and then execing the new xmonad binary; see . Haskell Weekly News. 2007-04-27. Archived from the original on 2007-05-29. Retrieved 2007-05-23.
  10. ^ See the developer discussion 2018-09-18 at the Wayback Machine on the dwm mailing list
  11. ^ Suckless.org: Fibonacci layouts patch 2013-04-13 at the Wayback Machine to dwm
  12. ^ "Manpage of xmonad". xmonad.org. 2007-04-18. from the original on 2007-07-08. Retrieved 2007-05-17.
  13. ^ xmonad users generate significant traffic in the #xmonad 2007-12-29 at the Wayback Machine IRC channel and the xmonad mailing list; in addition, there are a significant number of commits to the extension library from non-core devs (see the xmonad statistic page 2007-12-23 at the Wayback Machine)
  14. ^ "xmonad: Contributed code". xmonad.org. 2007-05-22. from the original on 2007-09-16. Retrieved 2007-05-23.
  15. ^ Mitchell, Neil (June 2008). "6.5.5". Transformation and Analysis (PDF) (PhD). University of York. (PDF) from the original on 12 September 2018. Retrieved 12 September 2018.
  16. ^ 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. (PDF) from the original on 2018-07-23. Retrieved 27 September 2018.
  17. ^ Mitchell, Neil (9 May 2007). "Neil Mitchell's Haskell Blog: Does XMonad crash?". from the original on 2007-05-14. Retrieved 2007-05-17.
  18. ^ Stewart & Janssen, 2007
  19. ^ Warden, Shane; Biancuzzi, Federico (2009). Masterminds of Programming: Conversations with the Creators of Major Programming Languages. O'Reilly Media. p. 181. ISBN 978-0596515171. from the original on 2018-09-19. Retrieved 2018-09-18.
  20. ^ Mena, Alejandro Serrano (5 March 2014). Beginning Haskell: A Project-Based Approach. Apress. p. 385. ISBN 9781430262510. from the original on 2018-09-24. Retrieved 2018-09-24 – via Google Books.
  21. ^ Zawodny, Jeremy (2009-12-06). . Linux Magazine. Archived from the original on 2018-09-23. Retrieved 2018-09-23.{{cite magazine}}: CS1 maint: unfit URL (link)
  22. ^ Hoffman, Chris (2012-05-24). "How to Use Xmonad, a Tiling Window Manager for Linux". How-To Geek. from the original on 2018-09-18. Retrieved 2018-09-17.
  23. ^ Hoffman, Chris (2013-05-18). "Linux Users Have a Choice: 8 Linux Desktop Environments". How-To Geek. from the original on 2017-07-13. Retrieved 2018-09-24.
  24. ^ Goerzen, John (2013-01-08). "I Raised My Kids On the Command Line...and They Love It". Lifehacker. Univision Communications. from the original on 2018-09-18. Retrieved 2018-09-17.
  25. ^ Stieben, Danny (2018-09-18). "Need A Fresh Desktop Environment for Linux? Try Openbox Or xmonad". makeuseof.com. from the original on 2017-11-23. Retrieved 2018-09-24.
  26. ^ "Mint 18 review: "Just works" Linux doesn't get any better than this". Ars Technica. 2016-08-04. from the original on 2018-09-17. Retrieved 2018-09-17.
  27. ^ Nita, Stefania Loredana; Mihailescu, Marius (14 September 2017). Practical Concurrent Haskell: With Big Data Applications. Apress. pp. 40–41. ISBN 978-1484227800 – via Amazon.
  28. ^ "Top 4 reasons I use dwm for my Linux window manager". Opensource.com. Red Hat. 2017-07-18. from the original on 2018-09-18. Retrieved 2018-09-17.
  29. ^ "Best Linux desktop of 2018". TechRadar. Future plc. 2018-01-15. from the original on 2018-09-18. Retrieved 2018-09-17.
  30. ^ 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.
  31. ^ Lippmeier, Ben (May 2010). Type Inference and Optimisation for an Impure World (PDF) (PhD). Australian National University. pp. 45–46. (PDF) from the original on 2018-09-27.
  32. ^ 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

  • Stewart, Don; Janssen, Spencer (September 2007). "XMonad: A Tiling Window Manager" (PDF). Haskell '07: Proceedings of the ACM SIGPLAN Workshop on Haskell Workshop: 119. doi:10.1145/1291201.1291218. ISBN 978-1-59593-674-5. Retrieved 2007-10-22.
    • Association for Computing Machinery archive
    • .mov presentation at the Wayback Machine (archived April 30, 2016)

Further reading

  • Lunduke, Bryan (2018-02-05). Half a Decade of Linux-y Shenanigans. Bryan Lunduke. p. 5. ISBN 9781387571246. According to Bryan Lunduke xmonad is an unknown desktop environment written in an unknown programming language, adding "Are xmonad and Haskell failures? Are they dead? No. Because they are unique. They are customizable. They are alive and kicking (and awesome)."
  • Tucker, Ronnie (29 November 2013). "Full Circle Magazine #79: THE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY". Full Circle. Full Circle Team – via Google Books. – the use of xmonad and other lightweight window managers

External links

  • Official website  
  • "Taste of Haskell" - OSCON presentation by Simon Peyton Jones on Haskell, using xmonad as an example
    • First half of talk on YouTube (video)
    • Second half of talk on YouTube (video)

xmonad, dynamic, window, manager, tiling, window, system, noted, being, written, functional, programming, language, haskell, tiling, modeoriginal, author, spencer, janssen, stewart, jason, creightoninitial, releasemarch, 2007, years, 2007, repositorygithub, wr. xmonad is a dynamic window manager tiling for the X Window System noted for being written in the functional programming language Haskell 3 4 xmonadxmonad in tiling modeOriginal author s Spencer Janssen Don Stewart Jason CreightonInitial releaseMarch 6 2007 16 years ago 2007 03 06 1 Repositorygithub wbr com wbr xmonad wbr xmonadWritten inHaskellOperating systemPOSIX compatiblePlatformCross platform requires the X Window System and GHCSize56 KB source code 2 Available inEnglishTypeWindow managerLicenseBSD 3 ClauseWebsitexmonad wbr org xmonad s Xinerama support tiling on three screens simultaneously xmonad in tiling mode Contents 1 Window manager 2 Haskell project 3 Reception 4 See also 5 References 5 1 Works cited 6 Further reading 7 External linksWindow manager EditBegun in March 2007 version 0 1 was announced 5 in April 2007 as 500 lines of Haskell 6 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 the mouse xmonad is packaged and distributed on a wide range of Unix like operating systems such as a large number of Linux distributions and BSD systems While originally a clone of dwm derivative in areas such as default keybindings xmonad now supports features not available to dwm users 7 8 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 9 xmonad features have begun to influence other tiling window managers dwm has borrowed urgency hooks from xmonad 10 has also included Xinerama support for multihead displays with release 4 8 and patches exist to reimplement xmonad s Fibonacci layout 11 Haskell project EditMain article Haskell programming language In 2007 the man page stated By utilising the expressivity of a modern functional language with a rich static type system xmonad provides a complete featureful window manager in less than 500 lines of code with an emphasis on correctness and robustness Internal properties of the window manager are checked using a combination of static guarantees provided by the type system and type based automated testing A benefit of this is that the code is simple to understand and easy to modify 12 Extensions to the core system including emulation of other window managers and unusual layout algorithms such as window tiling based on the Fibonacci spiral have been implemented by the active community 13 and are available as a library 14 In addition to obviating the need for the mouse 15 the xmonad developers make heavy use of semi formal methods and program 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 of QuickCheck 16 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 the zipper data structure for automatically managing focus and its core has been proven to be safe with respect to pattern matches 17 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 by side effects can be developed with the precision and efficiency we expect from Haskell by utilising purely functional data structures an expressive type system extended static checking and property based testing In addition we describe the use of Haskell as an application configuration and extension language 18 The code is separated into side effect free code and a thin wrapper for the side effects 19 According to Alejandro Serrano Mena there are two ways of implementing domain specific languages for actions in Haskell applications and libraries developing a combinator library or rolling your own monad with xmonad being a successful example of the latter 20 xmonad was regarded as one of the most well known Haskell projects in a 2013 functional programming book 4 Reception EditLinux Magazine included xmonad in a list of My Top Resources of 2009 21 In 2012 How To Geek described xmonad as having good but complicated ability to be configured 22 and it was included in a 2013 list of eight desktop environments for Linux 23 Lifehacker wrote that the basic operations of xmonads user interface can be taught using a small set of instructions 24 A high level of customisation and speed were noted by Network World 3 and in MakeUseOf xmonad was reviewed positively compared to Openbox 25 In 2016 Ars Technica said xmonad and Awesome had more advanced tiling ability than Cinnamon 26 In 2017 it was described as powerful with application as a windows manager for big data 27 while in an article on opensource com on the other hand dwm was chosen over xmonad 28 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 29 Due to the small number of lines of code of the Xmonad application the use of the purely functional programming language Haskell and recorded use of a rigorous testing procedure it is sometimes used as a baseline application in other research projects This has included re implementation of xmonad using the Coq proof assistant 30 a determination xmonad is an imperative program 31 and studies of package management relating to the NixOS linux distribution 32 See also Edit Free and open source software portalComparison of X window managers Formal verificationReferences Edit Initial import xmonad xmonad b2c1430 GitHub xmonad download suckless org Archived from the original on 2012 12 26 Retrieved December 17 2012 a b 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 a b 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 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 Xmonad a Tiling Window Manager Written in Haskell OSNews 2007 05 22 Archived from the original on 2008 04 11 Retrieved 2007 09 23 Keyboard Driven Environments Open a New Window OSNews 2007 05 31 Archived from the original on 2007 06 04 Retrieved 2007 05 31 xmonad 0 4 Released OSNews 2007 10 19 Archived from the original on 2007 12 22 Retrieved 2007 12 23 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 See the developer discussion Archived 2018 09 18 at the Wayback Machine on the dwm mailing list Suckless org Fibonacci layouts patch Archived 2013 04 13 at the Wayback Machine to dwm Manpage of xmonad xmonad org 2007 04 18 Archived from the original on 2007 07 08 Retrieved 2007 05 17 xmonad users generate significant traffic in the xmonad Archived 2007 12 29 at the Wayback Machine IRC channel and the xmonad mailing list in addition there are a significant number of commits to the extension library from non core devs see the xmonad statistic page Archived 2007 12 23 at the Wayback Machine xmonad Contributed code xmonad org 2007 05 22 Archived from the original on 2007 09 16 Retrieved 2007 05 23 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 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 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 Stewart amp Janssen 2007 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 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 Zawodny Jeremy 2009 12 06 My Top Resources of 2009 Linux Magazine Archived from the original on 2018 09 23 Retrieved 2018 09 23 a href Template Cite magazine html title Template Cite magazine cite magazine a CS1 maint unfit URL link 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 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 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 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 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 Nita Stefania Loredana Mihailescu Marius 14 September 2017 Practical Concurrent Haskell With Big Data Applications Apress pp 40 41 ISBN 978 1484227800 via Amazon 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 Best Linux desktop of 2018 TechRadar Future plc 2018 01 15 Archived from the original on 2018 09 18 Retrieved 2018 09 17 Swierstra Wouter 13 September 2012 xmonad in Coq Experience Report Programming a Window Manager with a Proof Assistant In Voigtlander 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 Lippmeier Ben May 2010 Type Inference and Optimisation for an Impure World PDF PhD Australian National University pp 45 46 Archived PDF from the original on 2018 09 27 Dolstra Eelco LOH 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 Stewart Don Janssen Spencer September 2007 XMonad A Tiling Window Manager PDF Haskell 07 Proceedings of the ACM SIGPLAN Workshop on Haskell Workshop 119 doi 10 1145 1291201 1291218 ISBN 978 1 59593 674 5 Retrieved 2007 10 22 Association for Computing Machinery archive Design and Implementation of Xmonad A Tiling Window Manager Video mov presentation at the Wayback Machine archived April 30 2016 Further reading EditLunduke Bryan 2018 02 05 Half a Decade of Linux y Shenanigans Bryan Lunduke p 5 ISBN 9781387571246 According to Bryan Lunduke xmonad is an unknown desktop environment written in an unknown programming language adding Are xmonad and Haskell failures Are they dead No Because they are unique They are customizable They are alive and kicking and awesome Tucker Ronnie 29 November 2013 Full Circle Magazine 79 THE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY Full Circle Full Circle Team via Google Books the use of xmonad and other lightweight window managersExternal links Edit Wikimedia Commons has media related to Xmonad Official website Taste of Haskell OSCON presentation by Simon Peyton Jones on Haskell using xmonad as an example First half of talk on YouTube video Second half of talk on YouTube video Retrieved from https en wikipedia org w index php title Xmonad amp oldid 1118221841, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.