stringtranslate.com

xmonad

Soporte para Xinerama de xmonad : mosaico en tres pantallas simultáneamente.
xmonad en modo mosaico

xmonad es un gestor de ventanas dinámico ( tiling ) para el X Window System , conocido por estar escrito en el lenguaje de programación funcional Haskell . [4] [5]

Gestor de ventanas

Iniciada en marzo de 2007, la versión 0.1 fue anunciada [6] en abril de 2007 como 500 líneas de Haskell [7] (que desde entonces han crecido a 2000 líneas). xmonad es un gestor de ventanas en mosaico, similar a dwm , larswm y StumpWM . Organiza las ventanas en un patrón no superpuesto y permite gestionarlas sin usar el ratón . xmonad está empaquetado y distribuido en una amplia gama de sistemas operativos tipo Unix , como una gran cantidad de distribuciones Linux y sistemas Berkeley Software Distribution (BSD).

Aunque originalmente era un clon de dwm (derivado en áreas como las combinaciones de teclas predeterminadas), xmonad ahora admite características que no están disponibles para los usuarios de dwm [8] [9] como diseño por espacio de trabajo, reflexión en mosaico, conservación de estado, duplicación de diseño, soporte para 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 2023 la página del manual decía:

Al utilizar la expresividad de un lenguaje funcional moderno con un sistema de tipos estáticos enriquecido , xmonad proporciona un gestor de ventanas completo y con muchas funciones [...], con énfasis en la corrección y la robustez. Las propiedades internas del gestor de ventanas se comprueban utilizando 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 fácil de entender y de modificar. [13]

Desde el inicio de xmonad, cuando se anunció su pequeño tamaño de código de 500 líneas de código, ha crecido hasta aproximadamente 2000 líneas en 2023.

La comunidad activa ha implementado extensiones del sistema central, incluida la emulación de otros administradores de ventanas y algoritmos de diseño inusuales, como el mosaico de ventanas basado en la espiral de Fibonacci [14], y están disponibles como biblioteca. [15]

Además de obviar la necesidad de un ratón, [16] los desarrolladores de xmonad hacen un uso intensivo de métodos semiformales y derivación de programas para mejorar la fiabilidad y permitir un recuento total de líneas de código inferior a 1200, a partir de la versión 0.7; las propiedades del gestor 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 en varios sentidos; además de ser el primer gestor de ventanas escrito en Haskell, también es el primero en utilizar la estructura de datos de cremallera para gestionar automáticamente el foco , y se ha demostrado que su núcleo es seguro con respecto a las coincidencias de patrones , [18] lo que contribuye aún más a la fiabilidad. Los desarrolladores escriben:

xmonad es un gestor 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 los efectos secundarios se puede desarrollar con la precisión y eficiencia que esperamos de Haskell utilizando estructuras de datos puramente funcionales, un sistema de tipos expresivo , comprobación estática extendida y pruebas basadas en propiedades. Además, describimos el uso de Haskell como un lenguaje de configuración y extensión de aplicaciones. [19]

El código se divide en código libre de efectos secundarios y un envoltorio fino 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 : "desarrollar una biblioteca de combinadores " o "crear tu propia mónada ", siendo xmonad un ejemplo exitoso de esto ú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

La revista Linux Magazine incluyó a xmonad en una lista de "Mis principales recursos de 2009". [22] En 2012, How-To Geek describió a xmonad como alguien que tiene una buena, pero compleja, capacidad de configuración, [23] y fue incluido 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 xmonad 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 evaluado 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 una 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" dijo "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 utiliza como una aplicación de referencia en otros proyectos de investigación. Esto ha incluido la reimplementación de xmonad utilizando el asistente de prueba 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]

Véase también

Referencias

  1. ^ "Importación inicial: xmonad/xmonad@b2c1430". GitHub .
  2. ^ "Versión 0.18.0". 3 de febrero de 2024. Consultado el 20 de febrero de 2024 .
  3. ^ "xmonad: download". suckless.org . Archivado desde el original el 26 de diciembre de 2012 . Consultado el 17 de diciembre de 2012 .
  4. ^ ab Lunduke, Bryan (15 de mayo de 2013). "10 entornos de escritorio Linux sorprendentes que probablemente nunca hayas visto". Network World . xmonad. Archivado desde el original el 26 de mayo de 2018.
  5. ^ ab Ohlig, Jens; Mehnert, Hannes; Schirmer, Stefanie (24 de septiembre de 2018). El libro de curry: aprendizaje de programación funcional con JavaScript. O'Reilly Alemania . pag. 177.ISBN 978-3868993691– a través de Google Books.
  6. ^ Janssen, Spencer (22 de abril de 2007). «Anuncio: xmonad 0.1». Haskell-cafe (lista de correo). Archivado desde el original el 30 de agosto de 2021. Consultado el 30 de agosto de 2021 .
  7. ^ "Xmonad: un gestor de ventanas en mosaico escrito en Haskell". OSNews . 2007-05-22. Archivado desde el original el 2008-04-11 . Consultado el 2007-09-23 .
  8. ^ "Los entornos controlados por teclado abren una nueva ventana". OSNews . 2007-05-31. Archivado desde el original el 2007-06-04 . Consultado el 2007-05-31 .
  9. ^ "xmonad 0.4 Released". OSNews . 19 de octubre de 2007. Archivado desde el original el 22 de diciembre de 2007. Consultado el 23 de diciembre de 2007 .
  10. ^ Mediante una combinación de rápida recompilación y posterior ejecución del nuevo binario xmonad; consulte "Haskell Weekly News: April 27, 2007". Haskell Weekly News. 2007-04-27. Archivado desde el original el 2007-05-29 . Consultado el 2007-05-23 .
  11. ^ Ver la discusión de desarrolladores Archivado el 18 de septiembre de 2018 en Wayback Machine en la lista de correo dwm
  12. ^ Suckless.org: parche de diseños de Fibonacci Archivado el 13 de abril de 2013 en Wayback Machine para dwm
  13. ^ "Página de manual de xmonad". xmonad.org. 27 de octubre de 2021. Archivado desde el original el 13 de agosto de 2023. Consultado el 1 de septiembre de 2023 .
  14. ^ Los usuarios de xmonad generan un tráfico significativo en el canal #xmonad Archivado el 29 de diciembre de 2007 en Wayback Machine Internet Relay Chat (IRC) y en la lista de correo de xmonad; además, hay muchos envíos a la biblioteca de extensiones de parte de desarrolladores no centrales (consulte la página de estadísticas de xmonad Archivado el 23 de diciembre de 2007 en Wayback Machine )
  15. ^ "xmonad: código contribuido". xmonad.org. 22 de mayo de 2007. Archivado desde el original el 16 de septiembre de 2007. Consultado el 23 de mayo de 2007 .
  16. ^ Mitchell, Neil (junio de 2008). "6.5.5". Transformación y análisis (PDF) (PhD). Universidad de York. Archivado (PDF) del original el 12 de septiembre de 2018. Consultado el 12 de septiembre de 2018 .
  17. ^ Hu, Zhenjiang; Hughes, John; Wang, Meng (2015). "How functional programming mattered" (PDF) . National Science Review . 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 .
  18. ^ Mitchell, Neil (9 de mayo de 2007). "Neil Mitchell's Haskell Blog: Does XMonad crash?" (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 .
  19. ^ Stewart y Janssen, 2007
  20. ^ Warden, Shane; Biancuzzi, Federico (2009). Masterminds of Programming: Conversaciones con los creadores de los principales lenguajes de programación . O'Reilly Media . pág. 181. ISBN 978-0596515171Archivado desde el original el 19-09-2018 . Consultado el 18-09-2018 .
  21. ^ 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 en Google Books.
  22. ^ Zawodny, Jeremy (6 de diciembre de 2009). "Mis principales recursos de 2009". Linux Magazine . Archivado desde el original el 23 de septiembre de 2018. Consultado el 23 de septiembre de 2018 .{{cite news}}: CS1 maint: URL no apta ( enlace )
  23. ^ Hoffman, Chris (24 de mayo de 2012). "Cómo usar Xmonad, un gestor 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 .
  24. ^ 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 .
  25. ^ Goerzen, John (8 de enero de 2013). "Crié a mis hijos en la línea de comandos... y les encanta". Lifehacker . Univision Communications . Archivado desde el original el 18 de septiembre de 2018 . Consultado el 17 de septiembre de 2018 .
  26. ^ Stieben, Danny (18 de septiembre de 2018). "¿Necesita un nuevo entorno de escritorio 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 .
  27. ^ "Reseña de Mint 18: "Simplemente funciona". Linux no puede ser mejor que esto". Ars Technica . 2016-08-04. Archivado desde el original el 2018-09-17 . Consultado el 2018-09-17 .
  28. ^ Nita, Stefanía Loredana; Mihailescu, Marius (14 de septiembre de 2017). Haskell concurrente práctico: con aplicaciones de Big Data . Presione . págs. 40–41. ISBN 978-1484227800– a través de Amazon.
  29. ^ "Las 4 razones principales por las que utilizo dwm como gestor de ventanas de Linux". Opensource.com . Red Hat . 2017-07-18. Archivado desde el original el 2018-09-18 . Consultado el 2018-09-17 .
  30. ^ "El mejor escritorio Linux de 2018". TechRadar . Future plc . 2018-01-15. Archivado desde el original el 2018-09-18 . Consultado el 2018-09-17 .
  31. ^ Swierstra, Wouter (13 de septiembre de 2012). "xmonad en Coq (informe de experiencia) Programación de un gestor de ventanas con un asistente de pruebas". 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: Association for Computing Machinery . págs. 131–136. ISBN 978-1-4503-1574-6.
  32. ^ Lippmeier, Ben (mayo de 2010). Inferencia de tipos y optimización para un mundo impuro (PDF) (PhD). Universidad Nacional de Australia. pp. 45–46. Archivado desde el original el 27 de septiembre de 2018.{{cite thesis}}: CS1 maint: URL no apta ( enlace )
  33. ^ 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.

Obras citadas

Lectura adicional

Enlaces externos