Xmonad

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

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

원래는 dwm의 클론(기본 키 바인딩과 같은 부분에서 파생됨)이었으나, 현재 xmonad는 작업 공간별 레이아웃, 타일링 반전, 상태 보존, 레이아웃 미러링, GNOME 지원 및 화면별 상태 표시줄과 같이 dwm 사용자가 사용할 수 없는 기능을 지원한다. 또한 외부 설정 파일을 수정하여 사용자 정의가 가능하며, 실행 중에 '다시 로드'할 수 있다.새로운 xmonad 바이너리를 신속하게 재컴파일한 다음 exec하는 방식의 조합을 통해 이루어진다.  참고. xmonad의 기능은 다른 타일형 창 관리자에 영향을 주기 시작했다. dwm은 xmonad에서 "urgency hooks"를 차용했으며,dwm 메일링 리스트의 개발자 논의  참고. 버전 4.8에서 (다중 모니터를 위한) Xinerama 지원을 포함했고, xmonad의 피보나치 나선 레이아웃을 재구현하기 위한 패치도 존재한다.dwm에 대한 Suckless.org: Fibonacci layouts patch .

 하스켈 프로젝트 

2023년의 Man page에 따르면: 

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

다른 창 관리자의 에뮬레이션이나 피보나치 나선 기반의 창 타일링과 같은 독특한 레이아웃 알고리즘을 포함한 핵심 시스템의 확장 기능들은 활발한 커뮤니티에 의해 구현되었으며xmonad 사용자는 #xmonad  IRC 채널과 xmonad 메일링 리스트에서 상당한 트래픽을 생성한다. 또한 핵심 개발자가 아닌 이들의 확장 라이브러리 기여도 많다(xmonad 통계 페이지  참고). 라이브러리로 사용 가능하다.

마우스의 필요성을 제거한 것과 더불어, xmonad 개발자들은 신뢰성을 높이고 버전 0.7 기준 총 코드 수를 1200라인 미만으로 유지하기 위해 준정형 기법과 프로그램 파생을 집중적으로 사용한다. (창 포커스 동작과 같은) 창 관리자의 속성은 QuickCheck를 사용하여 확인된다. 이러한 강조점 덕분에 xmonad는 여러 면에서 독특하다. 하스켈로 작성된 최초의 창 관리자일 뿐만 아니라, 포커스를 자동으로 관리하기 위해 지퍼 자료 구조를 사용한 최초의 사례이기도 하며, 그 핵심은 패턴 매칭과 관련하여 안전함이 증명되어 신뢰성에 더욱 기여한다. 개발자들은 다음과 같이 기록했다:
xmonad는 X 윈도 시스템을 위한 타일형 창 관리자로, 하스켈로 구현되고 설정되며 동적으로 확장 가능하다. 이 시연은 부작용이 지배적인 소프트웨어도 순수 함수형 자료 구조, 표현력 있는 자료형 체계, 확장된 정적 검사 및 속성 기반 테스트를 활용함으로써 하스켈에서 기대하는 정밀도와 효율성으로 개발될 수 있음을 보여준다. 또한 하스켈을 애플리케이션 설정 및 확장 언어로 사용하는 방법을 설명한다.Stewart & Janssen, 2007

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

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

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

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

 같이 보기 

 X 윈도 매니저 비교
 형식 검증

 각주 

 참고 자료 


 ACM 아카이브


 더 읽어보기 
  브라이언 런듀크에 따르면 xmonad는 알려지지 않은 프로그래밍 언어로 작성된 알려지지 않은 데스크톱 환경이며, "xmonad와 하스켈은 실패작인가? 그들은 죽었는가? 아니다. 그들은 독특하기 때문이다. 사용자 정의가 가능하다. 그들은 여전히 건재하다(그리고 멋지다)."라고 덧붙였다.
  – xmonad 및 기타 가벼운 창 관리자의 사용에 관하여.

 외부 링크 


 "Taste of Haskell" – 사이먼 페이튼 존스가 xmonad를 예로 들어 하스켈에 대해 발표한 오라일리 오픈 소스 컨벤션(OSCON) 자료.
 유튜브 강연 전반부 (비디오)
 유튜브 강연 후반부 (비디오)

분류:자유 X 윈도 매니저
분류:BSD 라이선스 소프트웨어