본문으로 이동

xmonad

위키백과, 우리 모두의 백과사전.

xmonad
원저자스펜서 얀센, 돈 스튜어트, 제이슨 크레이튼
발표일2007년 3월 6일(19년 전)(2007-03-06)[1]
안정화 버전
0.18.1[2] 위키데이터에서 편집하기 / 2026년 3월 7일
저장소
프로그래밍 언어하스켈
운영 체제POSIX 호환
플랫폼크로스 플랫폼; X 윈도 시스템 및 GHC 필요
크기56 KB (소스 코드)[3]
언어영어
종류창 관리자
라이선스BSD 3-clause
웹사이트xmonad.org 위키데이터에서 편집하기
xmonad의 Xinerama 지원: 3개의 화면에서 동시에 타일링되는 모습.
타일형 모드의 xmonad

xmonad는 X 윈도 시스템용 동적 창 관리자(타일형)로, 함수형 프로그래밍 언어인 하스켈로 작성된 것으로 유명하다.[4][5]

창 관리자

[편집]

2007년 3월에 시작된 xmonad의 0.1 버전은 2007년 4월에 500 라인의 하스켈 코드로 발표되었다.[6][7] (현재는 2000라인까지 늘어났다). xmonad는 Dwm, larswm, StumpWM과 유사한 타일형 창 관리자이다. 창을 겹치지 않는 패턴으로 배열하며, 마우스를 사용하지 않고도 창을 관리할 수 있게 한다. xmonad는 많은 리눅스 배포판과 BSD 시스템을 포함한 광범위한 유닉스 계열 운영체제에서 패키지화되어 배포된다.

원래는 dwm의 클론(기본 키 바인딩과 같은 부분에서 파생됨)이었으나, 현재 xmonad는 작업 공간별 레이아웃, 타일링 반전, 상태 보존, 레이아웃 미러링, GNOME 지원 및 화면별 상태 표시줄과 같이 dwm 사용자가 사용할 수 없는 기능을 지원한다.[8][9] 또한 외부 설정 파일을 수정하여 사용자 정의가 가능하며, 실행 중에 '다시 로드'할 수 있다.[10] xmonad의 기능은 다른 타일형 창 관리자에 영향을 주기 시작했다. dwm은 xmonad에서 "urgency hooks"를 차용했으며,[11] 버전 4.8에서 (다중 모니터를 위한) Xinerama 지원을 포함했고, xmonad의 피보나치 나선 레이아웃을 재구현하기 위한 패치도 존재한다.[12]

하스켈 프로젝트

[편집]

2023년의 Man page에 따르면:

풍부한 정적 자료형 시스템을 갖춘 현대적인 함수형 언어의 표현력을 활용함으로써, xmonad는 정확성과 견고성에 중점을 둔 완벽하고 기능이 풍부한 창 관리자를 제공한다 [...]. 창 관리자의 내부 속성은 자료형 체계가 제공하는 정적 보증과 자료형 기반의 자동화된 테스트의 조합을 사용하여 확인된다. 이로 인한 이점은 코드가 이해하기 쉽고 수정하기 용이하다는 점이다.[13]

소스 코드 크기가 500라인에 불과하다는 점을 내세웠던 초창기 이후, xmonad는 2023년 기준 약 2,000라인까지 성장했다.

다른 창 관리자의 에뮬레이션이나 피보나치 나선 기반의 창 타일링과 같은 독특한 레이아웃 알고리즘을 포함한 핵심 시스템의 확장 기능들은 활발한 커뮤니티에 의해 구현되었으며[14] 라이브러리로 사용 가능하다.[15]

마우스의 필요성을 제거한 것과 더불어,[16] xmonad 개발자들은 신뢰성을 높이고 버전 0.7 기준 총 코드 수를 1200라인 미만으로 유지하기 위해 준정형 기법과 프로그램 파생을 집중적으로 사용한다. (창 포커스 동작과 같은) 창 관리자의 속성은 QuickCheck를 사용하여 확인된다.[17] 이러한 강조점 덕분에 xmonad는 여러 면에서 독특하다. 하스켈로 작성된 최초의 창 관리자일 뿐만 아니라, 포커스를 자동으로 관리하기 위해 지퍼 자료 구조를 사용한 최초의 사례이기도 하며, 그 핵심은 패턴 매칭과 관련하여 안전함이 증명되어[18] 신뢰성에 더욱 기여한다. 개발자들은 다음과 같이 기록했다:

xmonad는 X 윈도 시스템을 위한 타일형 창 관리자로, 하스켈로 구현되고 설정되며 동적으로 확장 가능하다. 이 시연은 부작용이 지배적인 소프트웨어도 순수 함수형 자료 구조, 표현력 있는 자료형 체계, 확장된 정적 검사 및 속성 기반 테스트를 활용함으로써 하스켈에서 기대하는 정밀도와 효율성으로 개발될 수 있음을 보여준다. 또한 하스켈을 애플리케이션 설정 및 확장 언어로 사용하는 방법을 설명한다.[19]

코드는 부작용이 없는 코드와 부작용을 위한 얇은 래퍼로 분리되어 있다.[20] 알레한드로 세라노 메나에 따르면, 하스켈 응용 소프트웨어 및 라이브러리에서 동작을 위한 도메인 특화 언어를 구현하는 방법에는 "콤비네이터 라이브러리를 개발하는 것"과 "자신만의 모나드를 만드는 것"의 두 가지가 있는데, xmonad는 후자의 성공적인 예이다.[21] xmonad는 2013년 함수형 프로그래밍 서적에서 가장 잘 알려진 하스켈 프로젝트 중 하나로 간주되었다.[5]

평가

[편집]

리눅스 매거진은 "2009년 최고의 리소스" 목록에 xmonad를 포함했다.[22] 2012년 하우투긱(How-To Geek)은 xmonad가 훌륭하지만 복잡한 설정 능력을 갖추고 있다고 설명했으며,[23] 2013년 리눅스를 위한 8가지 데스크톱 환경 목록에 포함되었다.[24] 라이프해커는 xmonad 사용자 인터페이스의 기본 조작을 소수의 명령어로 익힐 수 있다고 썼다.[25] Network World는 높은 수준의 사용자 정의 가능성과 속도를 주목했으며,[4] MakeUseOf에서는 오픈박스에 비해 긍정적인 평가를 받았다.[26]

2016년 아르스 테크니카는 xmonad와 Awesome이 시나몬보다 더 발전된 타일링 능력을 갖추고 있다고 언급했다.[27] 2017년에는 빅 데이터용 창 관리자로서의 응용 가능성과 함께 강력하다는 설명을 들었으며,[28] 반면 opensource.com의 한 기사에서는 xmonad 대신 dwm이 선택되기도 했다.[29] 테크레이더의 "2018년 최고의 리눅스 데스크톱" 리뷰에서는 "우리가 다룬 모든 데스크톱 환경 중에서 단 하나 눈에 띄는 것이 있다면 바로 이것이다"라고 평했다.[30]

적은 소스 라인 오브 코드, 순수 함수형 프로그래밍 언어인 하스켈의 사용, 엄격한 소프트웨어 테스트 절차의 기록 덕분에 xmonad는 때때로 다른 연구 프로젝트에서 기준 애플리케이션으로 사용된다. 여기에는 Rocq 증명 보조기를 사용하여 xmonad를 재구현하는 것,[31] xmonad가 명령형 프로그래밍 프로그램이라는 결정,[32] 그리고 Nix 패키지 관리자를 기반으로 하는 NixOS 리눅스 배포판과 관련된 패키지 관리 연구 등이 포함된다.[33]

같이 보기

[편집]

각주

[편집]
  1. ↑ “Initial import: xmonad/xmonad@b2c1430”. 《GitHub》.
  2. ↑ “Release 0.18.1”. 2026년 3월 7일. 2026년 4월 7일에 확인함.
  3. ↑ “xmonad: download”. 《suckless.org》. 2012년 12월 26일에 원본 문서에서 보존된 문서. 2012년 12월 17일에 확인함.
  4. 1 2 Lunduke, Bryan (15 May 2013). “10 amazing Linux desktop environments you've probably never seen”. 《Network World》. xmonad. 26 May 2018에 원본 문서에서 보존된 문서.
  5. 1 2 Ohlig, Jens; Mehnert, Hannes; Schirmer, Stefanie (2018년 9월 24일). 《Das Curry-Buch – Funktional programmieren lernen mit JavaScript》. O'Reilly Germany. 177쪽. ISBN 978-3868993691 – Google Books 경유.
  6. ↑ Janssen, Spencer (2007년 4월 22일). “Announce: xmonad 0.1” (메일링 리스트). 《Haskell-cafe》. 2021년 8월 30일에 원본 문서에서 보존된 문서. 2021년 8월 30일에 확인함.
  7. ↑ “Xmonad: a Tiling Window Manager Written in Haskell”. OSNews. 2007년 5월 22일. 2008년 4월 11일에 원본 문서에서 보존된 문서. 2007년 9월 23일에 확인함.
  8. ↑ “Keyboard-Driven Environments Open a New Window”. OSNews. 2007년 5월 31일. 2007년 6월 4일에 원본 문서에서 보존된 문서. 2007년 5월 31일에 확인함.
  9. ↑ “xmonad 0.4 Released”. OSNews. 2007년 10월 19일. 2007년 12월 22일에 원본 문서에서 보존된 문서. 2007년 12월 23일에 확인함.
  10. ↑ 새로운 xmonad 바이너리를 신속하게 재컴파일한 다음 exec하는 방식의 조합을 통해 이루어진다. “Haskell Weekly News: April 27, 2007”. Haskell Weekly News. 2007년 4월 27일. 2007년 5월 29일에 원본 문서에서 보존된 문서. 2007년 5월 23일에 확인함. 참고.
  11. ↑ dwm 메일링 리스트의 개발자 논의 보관됨 2018-09-18 - 웨이백 머신 참고.
  12. ↑ dwm에 대한 Suckless.org: Fibonacci layouts patch 보관됨 2013-04-13 - 웨이백 머신.
  13. ↑ “Manpage of xmonad”. xmonad.org. 2021년 10월 27일. 2023년 8월 13일에 원본 문서에서 보존된 문서. 2023년 9월 1일에 확인함.
  14. ↑ xmonad 사용자는 #xmonad 보관됨 2007-12-29 - 웨이백 머신 IRC 채널과 xmonad 메일링 리스트에서 상당한 트래픽을 생성한다. 또한 핵심 개발자가 아닌 이들의 확장 라이브러리 기여도 많다(xmonad 통계 페이지 보관됨 2007-12-23 - 웨이백 머신 참고).
  15. ↑ “xmonad: Contributed code”. xmonad.org. 2007년 5월 22일. 2007년 9월 16일에 원본 문서에서 보존된 문서. 2007년 5월 23일에 확인함.
  16. ↑ Mitchell, Neil (June 2008). 〈6.5.5〉 (PhD). 《Transformation and Analysis》 (PDF). University of York. 12 September 2018에 원본 문서 (PDF)에서 보존된 문서. 12 September 2018에 확인함.
  17. ↑ Hu, Zhenjiang; Hughes, John; Wang, Meng (2015). 《How functional programming mattered》 (PDF). 《National Science Review》 2. 350–351쪽. doi:10.1093/nsr/nwv042. ISSN 2095-5138. 2018년 7월 23일에 원본 문서 (PDF)에서 보존된 문서. 2018년 9월 27일에 확인함.
  18. ↑ Mitchell, Neil (2007년 5월 9일). “Neil Mitchell's Haskell Blog: Does XMonad crash?”. 2007년 5월 14일에 원본 문서에서 보존된 문서. 2007년 5월 17일에 확인함.
  19. ↑ Stewart & Janssen, 2007
  20. ↑ Warden, Shane; Biancuzzi, Federico (2009). 《Masterminds of Programming: Conversations with the Creators of Major Programming Languages》. 오라일리 미디어. 181쪽. ISBN 978-0596515171. 2018년 9월 19일에 원본 문서에서 보존된 문서. 2018년 9월 18일에 확인함.
  21. ↑ Mena, Alejandro Serrano (2014년 3월 5일). 《Beginning Haskell: A Project-Based Approach》. Apress. 385쪽. ISBN 9781430262510. 2018년 9월 24일에 원본 문서에서 보존된 문서. 2018년 9월 24일에 확인함 – Google Books 경유.
  22. ↑ Zawodny, Jeremy (2009년 12월 6일). “My Top Resources of 2009”. 《리눅스 매거진》. 2018년 9월 23일에 원본 문서에서 보존된 문서. 2018년 9월 23일에 확인함.
  23. ↑ Hoffman, Chris (2012년 5월 24일). “How to Use Xmonad, a Tiling Window Manager for Linux”. How-To Geek. 2018년 9월 18일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
  24. ↑ Hoffman, Chris (2013년 5월 18일). “Linux Users Have a Choice: 8 Linux Desktop Environments”. How-To Geek. 2017년 7월 13일에 원본 문서에서 보존된 문서. 2018년 9월 24일에 확인함.
  25. ↑ Goerzen, John (2013년 1월 8일). “I Raised My Kids On the Command Line...and They Love It”. 《라이프해커》. Univision Communications. 2018년 9월 18일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
  26. ↑ Stieben, Danny (2018년 9월 18일). “Need A Fresh Desktop Environment for Linux? Try Openbox Or xmonad”. 《makeuseof.com》. 2017년 11월 23일에 원본 문서에서 보존된 문서. 2018년 9월 24일에 확인함.
  27. ↑ “Mint 18 review: "Just works" Linux doesn't get any better than this”. 《아르스 테크니카》. 2016년 8월 4일. 2018년 9월 17일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
  28. ↑ Nita, Stefania Loredana; Mihailescu, Marius (2017년 9월 14일). 《Practical Concurrent Haskell: With Big Data Applications》. Apress. 40–41쪽. ISBN 978-1484227800 – Amazon 경유.
  29. ↑ “Top 4 reasons I use dwm for my Linux window manager”. 《Opensource.com》. 레드햇. 2017년 7월 18일. 2018년 9월 18일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
  30. ↑ “Best Linux desktop of 2018”. 《테크레이더》. Future plc. 2018년 1월 15일. 2018년 9월 18일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
  31. ↑ Swierstra, Wouter (2012년 9월 13일). 〈xmonad in Coq (Experience Report) Programming a Window Manager with a Proof Assistant〉. Voigtländer, J. (편집). 《Haskell '12 Proceedings of the 2012 Haskell Symposium》. ICFP 2012 The 17th ACM SIGPLAN International Conference on Functional Programming. Copenhagen, Denmark: ACM. 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. 45–46쪽. 2018년 9월 27일에 원본 문서 (PDF)에서 보존된 문서.
  33. ↑ Dolstra, Eelco; LÖH, Andres; Pierron, Nicolas (November 2010). 《NixOS: A Purely Functional Linux Distribution》. 《Journal of Functional Programming》 20. 577–615쪽. doi:10.1017/S0956796810000195. ISSN 0956-7968.

참고 자료

[편집]

더 읽어보기

[편집]

외부 링크

[편집]