stringtranslate.com

xmonad

Поддержка Xinerama в xmonad : размещение на трех экранах одновременно.
xmonad в режиме тайлинга

xmonadдинамический оконный менеджер ( тайлинг ) для X Window System , известный тем, что написан на функциональном языке программирования Haskell . [4] [5]

Оконный менеджер

Начатая в марте 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]

проект Хаскелл

В 2023 году на странице руководства было указано:

Используя выразительность современного функционального языка с богатой статической системой типов, 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]

Смотрите также

Ссылки

  1. ^ "Начальный импорт: xmonad/xmonad@b2c1430". GitHub .
  2. ^ "Release 0.18.0". 3 февраля 2024 г. Получено 20 февраля 2024 г.
  3. ^ "xmonad: download". suckless.org . Архивировано из оригинала 2012-12-26 . Получено 17 декабря 2012 .
  4. ^ ab Lunduke, Bryan (15 мая 2013 г.). "10 удивительных сред рабочего стола Linux, которые вы, вероятно, никогда не видели". Network World . xmonad. Архивировано из оригинала 26 мая 2018 г.
  5. ^ аб Олиг, Йенс; Менерт, Ханнес; Ширмер, Стефани (24 сентября 2018 г.). Das Curry-Buch – функциональные программы, изучаемые с использованием JavaScript. О'Рейли Германия . п. 177. ИСБН 978-3868993691– через Google Книги.
  6. ^ Janssen, Spencer (2007-04-22). "Объявление: xmonad 0.1". Haskell-cafe (список рассылки). Архивировано из оригинала 2021-08-30 . Получено 2021-08-30 .
  7. ^ "Xmonad: тайловый оконный менеджер, написанный на Haskell". OSNews . 2007-05-22. Архивировано из оригинала 2008-04-11 . Получено 2007-09-23 .
  8. ^ "Keyboard-Driven Environments Open a New Window". OSNews . 2007-05-31. Архивировано из оригинала 2007-06-04 . Получено 2007-05-31 .
  9. ^ "xmonad 0.4 Released". OSNews . 2007-10-19. Архивировано из оригинала 2007-12-22 . Получено 2007-12-23 .
  10. ^ С помощью комбинации быстрой перекомпиляции и последующего выполнения нового двоичного файла xmonad; см. "Haskell Weekly News: 27 апреля 2007 г.". Haskell Weekly News. 2007-04-27. Архивировано из оригинала 2007-05-29 . Получено 2007-05-23 .
  11. ^ См. обсуждение разработчиков, заархивированное 18.09.2018 на Wayback Machine в списке рассылки dwm.
  12. ^ Suckless.org: Патч макетов Фибоначчи Архивировано 13.04.2013 на Wayback Machine в dwm
  13. ^ "Manpage of xmonad". xmonad.org. 2021-10-27. Архивировано из оригинала 2023-08-13 . Получено 2023-09-01 .
  14. ^ Пользователи xmonad генерируют значительный трафик в #xmonad. Архивировано 29.12.2007 на канале Wayback Machine Internet Relay Chat (IRC) и в списке рассылки xmonad; также есть много изменений в библиотеке расширений от сторонних разработчиков (см. страницу статистики xmonad. Архивировано 23.12.2007 на Wayback Machine ).
  15. ^ "xmonad: Предоставленный код". xmonad.org. 2007-05-22. Архивировано из оригинала 2007-09-16 . Получено 2007-05-23 .
  16. ^ Митчелл, Нил (июнь 2008 г.). "6.5.5". Трансформация и анализ (PDF) (PhD). Йоркский университет. Архивировано (PDF) из оригинала 12 сентября 2018 г. Получено 12 сентября 2018 г.
  17. ^ Ху, Чжэньцзян; Хьюз, Джон; Ван, Мэн (2015). «Как функциональное программирование имело значение» (PDF) . National Science Review . 2 (3): 350–351. doi : 10.1093/nsr/nwv042 . ISSN  2095-5138. Архивировано (PDF) из оригинала 23-07-2018 . Получено 27 сентября 2018 .
  18. ^ Митчелл, Нил (9 мая 2007 г.). "Блог Нила Митчелла по Haskell: XMonad дает сбой?". Архивировано из оригинала 14.05.2007 . Получено 17.05.2007 .
  19. ^ Стюарт и Янссен, 2007
  20. ^ Уорден, Шейн; Бьянкуцци, Федерико (2009). Мастера программирования: беседы с создателями основных языков программирования . O'Reilly Media . стр. 181. ISBN 978-0596515171. Архивировано из оригинала 2018-09-19 . Получено 2018-09-18 .
  21. Мена, Алехандро Серрано (5 марта 2014 г.). Начало Haskell: проектный подход. Апресс . п. 385. ИСБН 9781430262510. Архивировано из оригинала 2018-09-24 . Получено 2018-09-24 – через Google Books.
  22. ^ Заводни, Джереми (2009-12-06). "Мои главные ресурсы 2009 года". Linux Magazine . Архивировано из оригинала 2018-09-23 . Получено 2018-09-23 .{{cite news}}: CS1 maint: неподходящий URL ( ссылка )
  23. ^ Хоффман, Крис (2012-05-24). "Как использовать Xmonad, тайловый оконный менеджер для Linux". How-To Geek. Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
  24. ^ Хоффман, Крис (2013-05-18). «У пользователей Linux есть выбор: 8 сред рабочего стола Linux». How-To Geek. Архивировано из оригинала 2017-07-13 . Получено 2018-09-24 .
  25. ^ Goerzen, John (2013-01-08). «Я вырастил своих детей в командной строке... и им это нравится». Lifehacker . Univision Communications . Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
  26. ^ Stieben, Danny (2018-09-18). "Нужна свежая среда рабочего стола для Linux? Попробуйте Openbox или xmonad". makeuseof.com . Архивировано из оригинала 2017-11-23 . Получено 2018-09-24 .
  27. ^ "Обзор Mint 18: "Просто работает". Linux не может быть лучше этого". Ars Technica . 2016-08-04. Архивировано из оригинала 2018-09-17 . Получено 2018-09-17 .
  28. ^ Нита, Стефания Лоредана; Михайлеску, Мариус (14 сентября 2017 г.). Практический параллельный Haskell: с приложениями для больших данных . Апресс . стр. 40–41. ISBN 978-1484227800– через Амазон.
  29. ^ "4 главные причины, по которым я использую dwm в качестве оконного менеджера Linux". Opensource.com . Red Hat . 2017-07-18. Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
  30. ^ "Лучший рабочий стол Linux 2018 года". TechRadar . Future plc . 2018-01-15. Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
  31. ^ 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. ISBN 978-1-4503-1574-6.
  32. ^ Липпмейер, Бен (май 2010 г.). Вывод типов и оптимизация для нечистого мира (PDF) (PhD). Австралийский национальный университет. стр. 45–46. Архивировано из оригинала 27.09.2018.{{cite thesis}}: CS1 maint: неподходящий URL ( ссылка )
  33. ^ Долстра, Eelco; ЛО, Андрес; Пьеррон, Николя (ноябрь 2010 г.). «NixOS: чисто функциональный дистрибутив Linux». Журнал функционального программирования . 20 (5–6): 577–615. дои : 10.1017/S0956796810000195 . ISSN  0956-7968.

Цитируемые работы

Дальнейшее чтение

Внешние ссылки