Начатая в марте 2007 года, версия 0.1 была анонсирована [6] в апреле 2007 года как 500 строк Haskell [7] (которые с тех пор выросли до 2000 строк). xmonad — это тайловый оконный менеджер — похожий на dwm , larswm и StumpWM . Он размещает окна в неперекрывающемся шаблоне и позволяет управлять окнами без использования мыши . xmonad упакован и распространяется в широком спектре Unix-подобных операционных систем, таких как большое количество дистрибутивов Linux и систем Berkeley Software Distribution (BSD).
Хотя изначально xmonad был клоном dwm (производным в таких областях, как назначение клавиш по умолчанию), теперь он поддерживает функции, недоступные пользователям dwm [8] [9], такие как макет для каждого рабочего пространства, отражение тайлинга, сохранение состояния, зеркальное отображение макета, поддержка GNOME и строки состояния для каждого экрана; его можно настраивать, изменяя внешний файл конфигурации и «перезагружая» во время работы. [10] Функции xmonad начали влиять на другие менеджеры окон тайлинга: dwm позаимствовал «крючки срочности» из xmonad, [11] также включил поддержку Xinerama (для многоэкранных дисплеев ) с выпуском 4.8, и существуют патчи для повторной реализации макета Фибоначчи xmonad. [12]
Используя выразительность современного функционального языка с богатой статической системой типов, xmonad предоставляет полный, функциональный менеджер окон [...], с акцентом на корректность и надежность. Внутренние свойства менеджера окон проверяются с использованием комбинации статических гарантий, предоставляемых системой типов , и автоматизированного тестирования на основе типов . Преимущество этого в том, что код прост для понимания и легко модифицируется. [13]
С момента создания xmonad, когда был объявлен небольшой размер кода в 500 строк, к 2023 году он вырос примерно до 2000 строк.
Расширения базовой системы, включая эмуляцию других оконных менеджеров и необычные алгоритмы компоновки, такие как мозаика окон на основе спирали Фибоначчи , были реализованы активным сообществом [14] и доступны в виде библиотеки. [15]
Наряду с устранением необходимости в мыши [16], разработчики xmonad активно используют полуформальные методы и программный вывод для повышения надежности и обеспечения общего количества строк кода менее 1200, начиная с версии 0.7; свойства оконного менеджера (такие как поведение фокуса окна) проверяются с помощью QuickCheck . [17] Этот акцент делает xmonad необычным во многих отношениях; помимо того, что это первый оконный менеджер, написанный на Haskell, он также является первым, кто использует структуру данных zipper для автоматического управления фокусом , и его ядро, как было доказано, безопасно в отношении сопоставления с шаблоном , [18] что еще больше способствует надежности. Разработчики пишут:
xmonad — это тайловый оконный менеджер для системы X Window, реализованный, настроенный и динамически расширяемый в Haskell. Эта демонстрация представляет случай, когда программное обеспечение, в котором доминируют побочные эффекты, может быть разработано с точностью и эффективностью, которые мы ожидаем от Haskell, используя чисто функциональные структуры данных, выразительную систему типов , расширенную статическую проверку и тестирование на основе свойств. Кроме того, мы описываем использование Haskell в качестве языка конфигурации и расширения приложений. [19]
Код разделен на код без побочных эффектов и тонкую оболочку для побочных эффектов. [20] По словам Алехандро Серрано Мены, существует два способа реализации доменно-специфичных языков для действий в приложениях и библиотеках Haskell : «разработка библиотеки комбинаторов » или «создание собственной монады », причем xmonad является успешным примером последнего. [21]
xmonad считался одним из самых известных проектов Haskell в книге по функциональному программированию 2013 года. [5]
Прием
Linux Magazine включил xmonad в список «Мои лучшие ресурсы 2009 года». [22] В 2012 году How-To Geek описал xmonad как имеющий хорошую, но сложную возможность настройки, [23] и он был включен в список восьми сред рабочего стола для Linux 2013 года. [24] Lifehacker написал, что базовым операциям пользовательского интерфейса xmonad можно научиться, используя небольшой набор инструкций. [25] Network World отметил высокий уровень настройки и скорости, [4] а в MakeUseOf xmonad был положительно оценен по сравнению с Openbox . [26]
В 2016 году Ars Technica заявил, что xmonad и Awesome обладают более продвинутыми возможностями тайлинга, чем Cinnamon . [27] В 2017 году он был описан как мощный, с применением в качестве оконного менеджера для больших данных , [28] в то время как в статье на opensource.com , с другой стороны, dwm был выбран вместо xmonad. [29] В обзоре TechRadar «Лучший рабочий стол Linux 2018 года» говорилось: «Если есть одна среда рабочего стола, которая выделяется среди всех остальных, то это она». [30]
Из-за небольшого количества строк кода приложения Xmonad, использования чисто функционального языка программирования Haskell и зафиксированного использования строгой процедуры тестирования оно иногда используется в качестве базового приложения в других исследовательских проектах. Это включало повторную реализацию xmonad с использованием помощника доказательства Coq , [31] определение xmonad как императивной программы , [32] и исследования управления пакетами , относящиеся к дистрибутиву NixOS Linux. [33]
^ "Release 0.18.0". 3 февраля 2024 г. Получено 20 февраля 2024 г.
^ "xmonad: download". suckless.org . Архивировано из оригинала 2012-12-26 . Получено 17 декабря 2012 .
^ ab Lunduke, Bryan (15 мая 2013 г.). "10 удивительных сред рабочего стола Linux, которые вы, вероятно, никогда не видели". Network World . xmonad. Архивировано из оригинала 26 мая 2018 г.
^ аб Олиг, Йенс; Менерт, Ханнес; Ширмер, Стефани (24 сентября 2018 г.). Das Curry-Buch – функциональные программы, изучаемые с использованием JavaScript. О'Рейли Германия . п. 177. ИСБН978-3868993691– через Google Книги.
^ С помощью комбинации быстрой перекомпиляции и последующего выполнения нового двоичного файла xmonad; см. "Haskell Weekly News: 27 апреля 2007 г.". Haskell Weekly News. 2007-04-27. Архивировано из оригинала 2007-05-29 . Получено 2007-05-23 .
^ См. обсуждение разработчиков, заархивированное 18.09.2018 на Wayback Machine в списке рассылки dwm.
^ Suckless.org: Патч макетов Фибоначчи Архивировано 13.04.2013 на Wayback Machine в dwm
^ "Manpage of xmonad". xmonad.org. 2021-10-27. Архивировано из оригинала 2023-08-13 . Получено 2023-09-01 .
^ Пользователи xmonad генерируют значительный трафик в #xmonad. Архивировано 29.12.2007 на канале Wayback Machine Internet Relay Chat (IRC) и в списке рассылки xmonad; также есть много изменений в библиотеке расширений от сторонних разработчиков (см. страницу статистики xmonad. Архивировано 23.12.2007 на Wayback Machine ).
^ Митчелл, Нил (июнь 2008 г.). "6.5.5". Трансформация и анализ (PDF) (PhD). Йоркский университет. Архивировано (PDF) из оригинала 12 сентября 2018 г. Получено 12 сентября 2018 г.
^ Ху, Чжэньцзян; Хьюз, Джон; Ван, Мэн (2015). «Как функциональное программирование имело значение» (PDF) . National Science Review . 2 (3): 350–351. doi : 10.1093/nsr/nwv042 . ISSN 2095-5138. Архивировано (PDF) из оригинала 23-07-2018 . Получено 27 сентября 2018 .
^ Митчелл, Нил (9 мая 2007 г.). "Блог Нила Митчелла по Haskell: XMonad дает сбой?". Архивировано из оригинала 14.05.2007 . Получено 17.05.2007 .
^ Стюарт и Янссен, 2007
^ Уорден, Шейн; Бьянкуцци, Федерико (2009). Мастера программирования: беседы с создателями основных языков программирования . O'Reilly Media . стр. 181. ISBN978-0596515171. Архивировано из оригинала 2018-09-19 . Получено 2018-09-18 .
↑ Мена, Алехандро Серрано (5 марта 2014 г.). Начало Haskell: проектный подход. Апресс . п. 385. ИСБН9781430262510. Архивировано из оригинала 2018-09-24 . Получено 2018-09-24 – через Google Books.
^ Заводни, Джереми (2009-12-06). "Мои главные ресурсы 2009 года". Linux Magazine . Архивировано из оригинала 2018-09-23 . Получено 2018-09-23 .{{cite news}}: CS1 maint: неподходящий URL ( ссылка )
^ Хоффман, Крис (2012-05-24). "Как использовать Xmonad, тайловый оконный менеджер для Linux". How-To Geek. Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
^ Хоффман, Крис (2013-05-18). «У пользователей Linux есть выбор: 8 сред рабочего стола Linux». How-To Geek. Архивировано из оригинала 2017-07-13 . Получено 2018-09-24 .
^ Goerzen, John (2013-01-08). «Я вырастил своих детей в командной строке... и им это нравится». Lifehacker . Univision Communications . Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
^ Stieben, Danny (2018-09-18). "Нужна свежая среда рабочего стола для Linux? Попробуйте Openbox или xmonad". makeuseof.com . Архивировано из оригинала 2017-11-23 . Получено 2018-09-24 .
^ "Обзор Mint 18: "Просто работает". Linux не может быть лучше этого". Ars Technica . 2016-08-04. Архивировано из оригинала 2018-09-17 . Получено 2018-09-17 .
^ Нита, Стефания Лоредана; Михайлеску, Мариус (14 сентября 2017 г.). Практический параллельный Haskell: с приложениями для больших данных . Апресс . стр. 40–41. ISBN978-1484227800– через Амазон.
^ "4 главные причины, по которым я использую dwm в качестве оконного менеджера Linux". Opensource.com . Red Hat . 2017-07-18. Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
^ "Лучший рабочий стол Linux 2018 года". TechRadar . Future plc . 2018-01-15. Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
^ Swierstra, Wouter (13 сентября 2012 г.). "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 17th ACM SIGPLAN International Conference on Functional Programming. Копенгаген, Дания: Association for Computing Machinery . стр. 131–136. ISBN978-1-4503-1574-6.
^ Липпмейер, Бен (май 2010 г.). Вывод типов и оптимизация для нечистого мира (PDF) (PhD). Австралийский национальный университет. стр. 45–46. Архивировано из оригинала 27.09.2018.{{cite thesis}}: CS1 maint: неподходящий URL ( ссылка )
^ Долстра, Eelco; ЛО, Андрес; Пьеррон, Николя (ноябрь 2010 г.). «NixOS: чисто функциональный дистрибутив Linux». Журнал функционального программирования . 20 (5–6): 577–615. дои : 10.1017/S0956796810000195 . ISSN 0956-7968.
Цитируемые работы
Стюарт, Дон; Янссен, Спенсер (сентябрь 2007 г.). "Xmonad" (PDF) . Труды семинара ACM SIGPLAN по Haskell . стр. 119. doi :10.1145/1291201.1291218. ISBN 978-1-59593-674-5. S2CID 263875343 . Получено 22.10.2007 .
Архив Ассоциации вычислительной техники
"Design and Implementation of Xmonad – A Tiling Window Manager – Video (.mov) presentation". Архивировано из оригинала 30 апреля 2016 г. Получено 18 сентября 2018 г.{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
Дальнейшее чтение
Ландук, Брайан (2018-02-05). Полдесятилетия Linux-y Shenanigans. Брайан Ландук. С. 5. ISBN 9781387571246.По словам Брайана Ландуке, xmonad — это неизвестная среда рабочего стола , написанная на неизвестном языке программирования, и он добавляет: «Xmonad и Haskell — неудачники? Они мертвы? Нет. Потому что они уникальны. Их можно настраивать. Они живы и здоровы (и потрясающие)».
Такер, Ронни (29 ноября 2013 г.). «Full Circle Magazine #79: Независимый журнал для сообщества Ubuntu Linux». Full Circle . Команда Full Circle – через Google Books.– использование xmonad и других легковесных оконных менеджеров