xmonad
타일형 모드의 xmonad | |
| 원저자 | 스펜서 얀센, 돈 스튜어트, 제이슨 크레이튼 |
|---|---|
| 발표일 | 2007년 3월 6일[1] |
| 안정화 버전 | |
| 저장소 | |
| 프로그래밍 언어 | 하스켈 |
| 운영 체제 | POSIX 호환 |
| 플랫폼 | 크로스 플랫폼; X 윈도 시스템 및 GHC 필요 |
| 크기 | 56 KB (소스 코드)[3] |
| 언어 | 영어 |
| 종류 | 창 관리자 |
| 라이선스 | BSD 3-clause |
| 웹사이트 | 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년 기준[update] 약 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]
같이 보기
[편집]각주
[편집]- ↑ “Initial import: xmonad/xmonad@b2c1430”. 《GitHub》.
- ↑ “Release 0.18.1”. 2026년 3월 7일. 2026년 4월 7일에 확인함.
- ↑ “xmonad: download”. 《suckless.org》. 2012년 12월 26일에 원본 문서에서 보존된 문서. 2012년 12월 17일에 확인함.
- 1 2 Lunduke, Bryan (15 May 2013). “10 amazing Linux desktop environments you've probably never seen”. 《Network World》. xmonad. 26 May 2018에 원본 문서에서 보존된 문서.
- 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 경유.
- ↑ Janssen, Spencer (2007년 4월 22일). “Announce: xmonad 0.1” (메일링 리스트). 《Haskell-cafe》. 2021년 8월 30일에 원본 문서에서 보존된 문서. 2021년 8월 30일에 확인함.
- ↑ “Xmonad: a Tiling Window Manager Written in Haskell”. OSNews. 2007년 5월 22일. 2008년 4월 11일에 원본 문서에서 보존된 문서. 2007년 9월 23일에 확인함.
- ↑ “Keyboard-Driven Environments Open a New Window”. OSNews. 2007년 5월 31일. 2007년 6월 4일에 원본 문서에서 보존된 문서. 2007년 5월 31일에 확인함.
- ↑ “xmonad 0.4 Released”. OSNews. 2007년 10월 19일. 2007년 12월 22일에 원본 문서에서 보존된 문서. 2007년 12월 23일에 확인함.
- ↑ 새로운 xmonad 바이너리를 신속하게 재컴파일한 다음 exec하는 방식의 조합을 통해 이루어진다. “Haskell Weekly News: April 27, 2007”. Haskell Weekly News. 2007년 4월 27일. 2007년 5월 29일에 원본 문서에서 보존된 문서. 2007년 5월 23일에 확인함. 참고.
- ↑ dwm 메일링 리스트의 개발자 논의 보관됨 2018-09-18 - 웨이백 머신 참고.
- ↑ dwm에 대한 Suckless.org: Fibonacci layouts patch 보관됨 2013-04-13 - 웨이백 머신.
- ↑ “Manpage of xmonad”. xmonad.org. 2021년 10월 27일. 2023년 8월 13일에 원본 문서에서 보존된 문서. 2023년 9월 1일에 확인함.
- ↑ xmonad 사용자는 #xmonad 보관됨 2007-12-29 - 웨이백 머신 IRC 채널과 xmonad 메일링 리스트에서 상당한 트래픽을 생성한다. 또한 핵심 개발자가 아닌 이들의 확장 라이브러리 기여도 많다(xmonad 통계 페이지 보관됨 2007-12-23 - 웨이백 머신 참고).
- ↑ “xmonad: Contributed code”. xmonad.org. 2007년 5월 22일. 2007년 9월 16일에 원본 문서에서 보존된 문서. 2007년 5월 23일에 확인함.
- ↑ Mitchell, Neil (June 2008). 〈6.5.5〉 (PhD). 《Transformation and Analysis》 (PDF). University of York. 12 September 2018에 원본 문서 (PDF)에서 보존된 문서. 12 September 2018에 확인함.
- ↑ 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일에 확인함.
- ↑ Mitchell, Neil (2007년 5월 9일). “Neil Mitchell's Haskell Blog: Does XMonad crash?”. 2007년 5월 14일에 원본 문서에서 보존된 문서. 2007년 5월 17일에 확인함.
- ↑ Stewart & Janssen, 2007
- ↑ 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일에 확인함.
- ↑ Mena, Alejandro Serrano (2014년 3월 5일). 《Beginning Haskell: A Project-Based Approach》. Apress. 385쪽. ISBN 9781430262510. 2018년 9월 24일에 원본 문서에서 보존된 문서. 2018년 9월 24일에 확인함 – Google Books 경유.
- ↑ Zawodny, Jeremy (2009년 12월 6일). “My Top Resources of 2009”. 《리눅스 매거진》. 2018년 9월 23일에 원본 문서에서 보존된 문서. 2018년 9월 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일에 확인함.
- ↑ Hoffman, Chris (2013년 5월 18일). “Linux Users Have a Choice: 8 Linux Desktop Environments”. How-To Geek. 2017년 7월 13일에 원본 문서에서 보존된 문서. 2018년 9월 24일에 확인함.
- ↑ 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일에 확인함.
- ↑ Stieben, Danny (2018년 9월 18일). “Need A Fresh Desktop Environment for Linux? Try Openbox Or xmonad”. 《makeuseof.com》. 2017년 11월 23일에 원본 문서에서 보존된 문서. 2018년 9월 24일에 확인함.
- ↑ “Mint 18 review: "Just works" Linux doesn't get any better than this”. 《아르스 테크니카》. 2016년 8월 4일. 2018년 9월 17일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
- ↑ Nita, Stefania Loredana; Mihailescu, Marius (2017년 9월 14일). 《Practical Concurrent Haskell: With Big Data Applications》. Apress. 40–41쪽. ISBN 978-1484227800 – Amazon 경유.
- ↑ “Top 4 reasons I use dwm for my Linux window manager”. 《Opensource.com》. 레드햇. 2017년 7월 18일. 2018년 9월 18일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
- ↑ “Best Linux desktop of 2018”. 《테크레이더》. Future plc. 2018년 1월 15일. 2018년 9월 18일에 원본 문서에서 보존된 문서. 2018년 9월 17일에 확인함.
- ↑ 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.
- ↑ Lippmeier, Ben (May 2010). 《Type Inference and Optimisation for an Impure World》 (PDF) (PhD). Australian National University. 45–46쪽. 2018년 9월 27일에 원본 문서 (PDF)에서 보존된 문서.
- ↑ 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.
참고 자료
[편집]- Stewart, Don; Janssen, Spencer (September 2007). 〈Xmonad〉 (PDF). 《Proceedings of the ACM SIGPLAN workshop on Haskell workshop》. 119쪽. doi:10.1145/1291201.1291218. ISBN 978-1-59593-674-5. S2CID 263875343. 2007년 10월 22일에 확인함.
- ACM 아카이브
- “Design and Implementation of Xmonad – A Tiling Window Manager – Video (.mov) presentation”. 2016년 4월 30일에 원본 문서에서 보존된 문서. 2018년 9월 18일에 확인함.
더 읽어보기
[편집]- Lunduke, Bryan (2018년 2월 5일). 《Half a Decade of Linux-y Shenanigans》. Bryan Lunduke. 5쪽. ISBN 9781387571246. 브라이언 런듀크에 따르면 xmonad는 알려지지 않은 프로그래밍 언어로 작성된 알려지지 않은 데스크톱 환경이며, "xmonad와 하스켈은 실패작인가? 그들은 죽었는가? 아니다. 그들은 독특하기 때문이다. 사용자 정의가 가능하다. 그들은 여전히 건재하다(그리고 멋지다)."라고 덧붙였다.
- Tucker, Ronnie (2013년 11월 29일). “Full Circle Magazine #79: The Independent Magazine for the Ubuntu Linux Community”. 《Full Circle》 (Full Circle Team) – Google Books 경유. – xmonad 및 기타 가벼운 창 관리자의 사용에 관하여.
외부 링크
[편집]- Xmonad
- 공식 웹사이트 - "Taste of Haskell" – 사이먼 페이튼 존스가 xmonad를 예로 들어 하스켈에 대해 발표한 오라일리 오픈 소스 컨벤션(OSCON) 자료.
- 유튜브 강연 전반부 (비디오)
- 유튜브 강연 후반부 (비디오)