xmonad es un administrador de ventanas dinámico ( mosaico ) para el sistema X Window , que se destaca por estar escrito en el lenguaje de programación funcional Haskell . [4] [5]
Autor (es) original (es) | Spencer Janssen, Don Stewart y Jason Creighton |
---|---|
Versión inicial | 6 de marzo de 2007 [1] |
Lanzamiento estable | 0.15 [2] / 30 de septiembre de 2018 |
Versión de vista previa | última revisión de Darcs / (instantánea) |
Repositorio | |
Escrito en | Haskell |
Sistema operativo | Compatible con POSIX |
Plataforma | Multiplataforma ; requiere el sistema X Window y GHC |
Tamaño | 56 KB (código fuente) [3] |
Disponible en | inglés |
Tipo | Administrador de ventanas |
Licencia | BSD-3 |
Sitio web | xmonad |
Administrador de ventanas
Iniciada en marzo de 2007, la versión 0.1 se anunció [6] en abril de 2007 como 500 líneas de Haskell. [7] xmonad es un administrador de ventanas en mosaico , similar a dwm , larswm y StumpWM . Organiza las ventanas en un patrón que no se superpone y permite administrar las ventanas sin usar el mouse . xmonad está empaquetado y distribuido en una amplia gama de sistemas operativos similares a Unix, como una gran cantidad de distribuciones de Linux y sistemas BSD .
Aunque originalmente era un clon de dwm (derivado en áreas como combinaciones de teclas predeterminadas), xmonad ahora admite funciones que no están disponibles para los usuarios de dwm [8] [9] , como el diseño por espacio de trabajo, la reflexión en mosaico, la preservación del estado, la duplicación del diseño, la compatibilidad con GNOME y barras de estado por pantalla; se puede personalizar modificando un archivo de configuración externo y 'recargarlo' mientras se ejecuta. [10] Las características de xmonad han comenzado a influir en otros administradores de ventanas en mosaico - dwm ha tomado prestados "ganchos de urgencia" de xmonad, [11] también ha incluido soporte para Xinerama (para pantallas multicabezal ) con la versión 4.8, y existen parches para reimplementar el diseño Fibonacci de xmonad. [12]
Proyecto Haskell
En 2007, la página de manual decía:
Al utilizar la expresividad de un lenguaje funcional moderno con un rico sistema de tipos estáticos , xmonad proporciona un administrador de ventanas completo y funcional en menos de 500 líneas de código, con énfasis en la corrección y solidez. Las propiedades internas del administrador de ventanas se verifican mediante una combinación de garantías estáticas proporcionadas por el sistema de tipos y pruebas automatizadas basadas en tipos . Una ventaja de esto es que el código es simple de entender y fácil de modificar. [13]
Extensiones al sistema central, incluyendo la emulación de otros gestores de ventanas y algoritmos de diseño inusuales, tales como ventana embaldosado basan en la espiral de Fibonacci , se han implementado por la comunidad activo [14] y están disponibles como una biblioteca. [15]
Además de obviar la necesidad del mouse, [16] los desarrolladores de xmonad hacen un uso intensivo de métodos semiformales y derivación de programas para mejorar la confiabilidad y permitir que una línea total de código cuente menos de 1200, a partir de la versión 0.7; Las propiedades del administrador de ventanas (como el comportamiento del foco de la ventana) se comprueban mediante el uso de QuickCheck . [17] Este énfasis hace que xmonad sea inusual de varias maneras; además de ser el primer administrador de ventanas escrito en Haskell, también es el primero en utilizar la estructura de datos de cremallera para administrar automáticamente el enfoque , y se ha demostrado que su núcleo es seguro con respecto a las coincidencias de patrones , [18] contribuyendo aún más a la confiabilidad. Los desarrolladores escriben:
xmonad es un administrador de ventanas en mosaico para el sistema X Window, implementado, configurado y extensible dinámicamente en Haskell. Esta demostración presenta el caso de que el software dominado por efectos secundarios se puede desarrollar con la precisión y eficiencia que esperamos de Haskell mediante el uso de estructuras de datos puramente funcionales, un sistema de tipo expresivo , verificación estática extendida y pruebas basadas en propiedades. Además, describimos el uso de Haskell como un lenguaje de extensión y configuración de aplicaciones. [19]
El código está separado en código libre de efectos secundarios y una envoltura delgada para los efectos secundarios. [20] Según Alejandro Serrano Mena, hay dos formas de implementar lenguajes específicos de dominio para acciones en aplicaciones y bibliotecas Haskell "desarrollando una biblioteca combinatoria " o "enrollando tu propia mónada ", siendo xmonad un ejemplo exitoso de este último. [21] xmonad fue considerado como uno de los proyectos Haskell más conocidos en un libro de programación funcional de 2013. [5]
Recepción
Linux Magazine incluyó xmonad en una lista de "Mis principales recursos de 2009". [22] En 2012, How-To Geek describió a xmonad como una capacidad de configuración buena, pero complicada, [23] y se incluyó en una lista de 2013 de ocho entornos de escritorio para Linux. [24] Lifehacker escribió que las operaciones básicas de la interfaz de usuario de xmonads se pueden enseñar usando un pequeño conjunto de instrucciones. [25] Network World notó un alto nivel de personalización y velocidad, [4] y en MakeUseOf xmonad fue revisado positivamente en comparación con Openbox . [26]
En 2016, Ars Technica dijo que xmonad y Awesome tenían una capacidad de mosaico más avanzada que Cinnamon . [27] En 2017 se describió como poderoso, con la aplicación como administrador de ventanas para big data , [28] mientras que en un artículo en opensource.com, por otro lado, se eligió dwm sobre xmonad. [29] Una revisión de TechRadar del "Mejor escritorio Linux de 2018" decía "Si hay un entorno de escritorio que se destaca de todos los demás que tenemos aquí, es este". [30]
Debido a la pequeña cantidad de líneas de código de la aplicación Xmonad, el uso del lenguaje de programación puramente funcional Haskell y el uso registrado de un procedimiento de prueba riguroso, a veces se usa como una aplicación de base en otros proyectos de investigación. Esto ha incluido la reimplementación de xmonad usando el asistente de pruebas Coq , [31] una determinación de que xmonad es un programa imperativo , [32] y estudios de administración de paquetes relacionados con la distribución de Linux NixOS . [33]
Ver también
- Comparación de los administradores de ventanas X
- Verificación formal
Referencias
- ^ "Importación inicial. · Xmonad / xmonad @ b2c1430" . GitHub .
- ^ "Lanzamientos - xmonad / xmonad" . Consultado el 1 de febrero de 2019 , a través de GitHub .
- ^ "xmonad: descargar" . suckless.org . Archivado desde el original el 26 de diciembre de 2012 . Consultado el 17 de diciembre de 2012 .
- ^ a b Lunduke, Bryan (15 de mayo de 2013). "10 increíbles entornos de escritorio Linux que probablemente nunca hayas visto" . Mundo de la red . xmonad. Archivado desde el original el 25 de mayo de 2018.
- ^ a b Ohlig, Jens; Mehnert, Hannes; Schirmer, Stefanie (24 de septiembre de 2018). Das Curry-Buch - Programación funcional con JavaScript . O'Reilly Alemania . pag. 177. ISBN 978-3868993691 - a través de Google Books.
- ^ "{título}" . Archivado desde el original el 25 de junio de 2007 . Consultado el 23 de septiembre de 2018 .CS1 maint: bot: estado de URL original desconocido ( enlace ) Lista de correo de Haskell-cafe por Spencer Janssen
- ^ "Xmonad: un administrador de ventanas de mosaico escrito en Haskell" . OSNews . 2007-05-22. Archivado desde el original el 11 de abril de 2008 . Consultado el 23 de septiembre de 2007 .
- ^ "Los entornos controlados por teclado abren una nueva ventana" . OSNews . 2007-05-31. Archivado desde el original el 4 de junio de 2007 . Consultado el 31 de mayo de 2007 .
- ^ "xmonad 0.4 lanzado" . OSNews . 2007-10-19. Archivado desde el original el 22 de diciembre de 2007 . Consultado el 23 de diciembre de 2007 .
- ^ Mediante una combinación de recompilación rápida y luego ejecución del nuevo binario xmonad; ver "Haskell Weekly News: 27 de abril de 2007" . Noticias semanales de Haskell. 2007-04-27. Archivado desde el original el 29 de mayo de 2007 . Consultado el 23 de mayo de 2007 .
- ^ Vea la discusión del desarrollador Archivado 2018-09-18 en Wayback Machine en la lista de correo de dwm
- ^ Suckless.org: parche de diseños de Fibonacci Archivado el13 de abril de 2013en Wayback Machine en dwm
- ^ "Página de manual de xmonad" . xmonad.org. 2007-04-18. Archivado desde el original el 8 de julio de 2007 . Consultado el 17 de mayo de 2007 .
- ^ Los usuarios de xmonad generan un tráfico significativo en el #xmonad Archivado 2007-12-29 en elcanal de IRC de Wayback Machine y la lista de correo de xmonad; Además, hay un número significativo de confirmaciones a la biblioteca de extensiones de desarrolladores no centrales (consulte la página de estadísticas de xmonad Archivada el 23 de diciembre de 2007en Wayback Machine ).
- ^ "xmonad: código contribuido" . xmonad.org. 2007-05-22. Archivado desde el original el 16 de septiembre de 2007 . Consultado el 23 de mayo de 2007 .
- ^ Mitchell, Neil (junio de 2008). "6.5.5". Transformación y Análisis (PDF) (PhD). Universidad de York. Archivado (PDF) desde el original el 12 de septiembre de 2018 . Consultado el 12 de septiembre de 2018 .
- ^ Hu, Zhenjiang; Hughes, John; Wang, Meng (2015). "Cómo importaba la programación funcional" (PDF) . Revista Nacional de Ciencias . 2 (3): 350–351. doi : 10.1093 / nsr / nwv042 . ISSN 2095-5138 . Archivado (PDF) desde el original el 23 de julio de 2018 . Consultado el 27 de septiembre de 2018 .
- ^ Mitchell, Neil (9 de mayo de 2007). "Blog de Haskell de Neil Mitchell: ¿Se bloquea XMonad?" . Archivado desde el original el 14 de mayo de 2007 . Consultado el 17 de mayo de 2007 .
- ^ Stewart y Janssen, 2007
- ^ Alcaide, Shane; Biancuzzi, Federico (2009). Mentes maestras de la programación: conversaciones con los creadores de los principales lenguajes de programación . O'Reilly Media . pag. 181. ISBN 978-0596515171. Archivado desde el original el 19 de septiembre de 2018 . Consultado el 18 de septiembre de 2018 .
- ^ Mena, Alejandro Serrano (5 de marzo de 2014). Comenzando con Haskell: un enfoque basado en proyectos . Presione . pag. 385. ISBN 9781430262510. Archivado desde el original el 24 de septiembre de 2018 . Consultado el 24 de septiembre de 2018 , a través de Google Books.
- ^ Zawodny, Jeremy (6 de diciembre de 2009). "Mis principales recursos de 2009" . Revista Linux . Archivado desde el original el 23 de septiembre de 2018 . Consultado el 23 de septiembre de 2018 .
- ^ Hoffman, Chris (24 de mayo de 2012). "Cómo utilizar Xmonad, un administrador de ventanas en mosaico para Linux" . How-To Geek . Archivado desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .
- ^ Hoffman, Chris (18 de mayo de 2013). "Los usuarios de Linux tienen una opción: 8 entornos de escritorio Linux" . How-To Geek . Archivado desde el original el 13 de julio de 2017 . Consultado el 24 de septiembre de 2018 .
- ^ Goerzen, John (8 de enero de 2013). "Crié a mis hijos en la línea de comandos ... y les encanta" . Lifehacker . Comunicaciones Univision . Archivado desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .
- ^ Stieben, Danny (18 de septiembre de 2018). "¿Necesita un entorno de escritorio nuevo para Linux? Pruebe Openbox o xmonad" . makeuseof.com . Archivado desde el original el 23 de noviembre de 2017 . Consultado el 24 de septiembre de 2018 .
- ^ "Revisión de Mint 18:" Simplemente funciona "Linux no hay nada mejor que esto" . Ars Technica . 2016-08-04. Archivado desde el original el 17 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .
- ^ Nita, Stefania Loredana; Mihailescu, Marius (14 de septiembre de 2017). Práctica Haskell concurrente: con aplicaciones de Big Data . Presione . págs. 40–41. ISBN 978-1484227800 - a través de Amazon.
- ^ "Las 4 razones principales por las que uso dwm para mi administrador de ventanas de Linux" . Opensource.com . Red Hat . 2017-07-18. Archivado desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .
- ^ "Mejor escritorio Linux de 2018" . TechRadar . Future plc . 2018-01-15. Archivado desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .
- ^ Swierstra, Wouter (13 de septiembre de 2012). "xmonad en Coq (Informe de experiencia) Programación de un administrador de ventanas con un asistente de prueba". En Voigtländer, J (ed.). Haskell '12 Actas del Simposio Haskell 2012 . ICFP 2012 La 17ª Conferencia Internacional ACM SIGPLAN sobre Programación Funcional . Copenhague, Dinamarca: Asociación de Maquinaria de Computación . págs. 131-136. ISBN 978-1-4503-1574-6.
- ^ Lippmeier, Ben (mayo de 2010). Inferencia de tipos y optimización para un mundo impuro (PDF) (PhD). Universidad Nacional de Australia. págs. 45–46. Archivado (PDF) desde el original el 27 de septiembre de 2018.
- ^ Dolstra, Eelco; LÖH, Andrés; Pierron, Nicolas (noviembre de 2010). "NixOS: una distribución de Linux puramente funcional" . Revista de programación funcional . 20 (5–6): 577–615. doi : 10.1017 / S0956796810000195 . ISSN 0956-7968 .
- Notas
- Stewart, Don; Janssen, Spencer (septiembre de 2007). "XMonad: un administrador de ventanas en mosaico" (PDF) . Haskell '07: Actas del taller ACM SIGPLAN sobre Haskell Workshop : 119. doi : 10.1145 / 1291201.1291218 . ISBN 978-1-59593-674-5. Consultado el 22 de octubre de 2007 .
- Archivo de la Asociación de Maquinaria de Computación
- Diseño e implementación de Xmonad - A Tiling Window Manager - Presentación de video .mov en Wayback Machine (archivado el 30 de abril de 2016)
Otras lecturas
- Lunduke, Bryan (5 de febrero de 2018). Media década de travesuras con Linux . Bryan Lunduke. pag. 5. ISBN 9781387571246.Según Bryan Lunduke, xmonad es un entorno de escritorio desconocido escrito en un lenguaje de programación desconocido, y agrega: "¿Son xmonad y Haskell fallas? ¿Están muertos? No. Porque son únicos. Son personalizables. Están vivos y coleando (y asombrosos). "
- Tucker, Ronnie (29 de noviembre de 2013). "Revista Full Circle # 79: LA REVISTA INDEPENDIENTE PARA LA COMUNIDAD UBUNTU LINUX" . Círculo completo . Equipo de círculo completo: a través de Google Books. - el uso de xmonad y otros administradores de ventanas ligeros
enlaces externos
- Página web oficial
- "Taste of Haskell" : presentación de OSCON de Simon Peyton Jones sobre Haskell, utilizando xmonad como ejemplo
- Primera mitad de la charla en YouTube (video)
- Segunda mitad de la charla en YouTube (video)