awesome es un gestor de ventanas dinámico para el X Window System desarrollado en los lenguajes de programación C y Lua . Lua también se utiliza para configurar y ampliar el gestor de ventanas. Su desarrollo comenzó como una bifurcación de dwm , aunque ha diferido considerablemente desde entonces. [4] Su objetivo es ser extremadamente pequeño y rápido, pero ampliamente personalizable. Permite al usuario gestionar ventanas con el uso del teclado.
El fork fue inicialmente apodado jdwm , donde "jd" denotaba las iniciales del programador principal y dwm denotaba el proyecto de software del cual se bifurcaba. El primer repositorio git para lo que se convertiría en awesome se creó en septiembre de 2007. jdwm fue renombrado a awesome, llamado así por la misma frase utilizada por el personaje de Cómo conocí a vuestra madre, Barney Stinson . [5] awesome fue anunciado oficialmente en la lista de correo de dwm el 20 de septiembre de 2007. [4]
Un gestor de ventanas es probablemente uno de los programas más utilizados en las tareas cotidianas, junto con el navegador web, el lector de correo y el editor de texto. Los usuarios avanzados y los programadores tienen una amplia gama de opciones entre varias herramientas para estas tareas cotidianas. Algunas son muy ampliables y configurables.
awesome intenta completar estas herramientas con lo que nos falta: un gestor de ventanas extensible y altamente configurable.
Para lograr este objetivo, awesome ha sido diseñado como un gestor de ventanas de framework. Es extremadamente rápido, pequeño, dinámico y altamente extensible utilizando el lenguaje de programación Lua . [6]
awesome ha surgido como una bifurcación de dwm que ofrece personalización a través de archivos de configuración externos (ver Configuración y personalización a continuación). Aunque es altamente extensible, la configuración predeterminada del administrador de ventanas se simplifica deliberadamente. Al hacerlo, el autor ha creado lo que él llama un administrador de ventanas de marco [5] para que los usuarios lo amplíen y adapten a sus propias necesidades.
Desde el principio, awesome fue concebido como una bifurcación de dwm con un archivo de configuración externo. [5] Como tal, su formato de archivo de configuración y el proceso de configuración en sí fueron objeto de especial atención por parte del autor.
Antes de la tercera versión principal, una de las características de awesome era lo que Danjou denominaba una "configuración sin complicaciones". [7] Las primeras versiones de awesome (1.x) eran modificaciones simples de dwm con configuración de archivo plano que usaba libconfig. En la rama 2.x, Danjou cambió la biblioteca de configuración de libconfig a libconfuse, una biblioteca de configuración de archivo plano diferente, algo similar a libconfig. Durante el desarrollo de las versiones 2.x, se agregaron muchas características de personalización a awesome, como barras de título y dibujo de íconos. [5]
El 20 de mayo de 2008, Danjou anunció en un correo electrónico a la lista de correo awesome [8] que se usaría un nuevo formato para el archivo de configuración en la versión 3.0. El nuevo formato se colocó en un archivo ~/.awesomerc.lua, y luego se movió a ~/.config/awesome/rc.lua. Como sugiere la extensión, el archivo de configuración está escrito en el lenguaje de programación Lua . Danjou argumentó que el nuevo formato y la integración con Lua permitirían a los usuarios de awesome personalizar awesome de maneras que antes consideraba imposibles: usar un lenguaje de programación para la configuración hacía posible especificar dinámicamente las opciones de configuración. [8]
La impresionante API de Lua ahora está alojada en la página de inicio de awesome, [9] y un artículo estilo tutorial sobre cómo configurar awesome está publicado en la Wiki de awesome. [10]
Es posible crear temas (o apariencias ) increíbles usando la biblioteca Beautiful del administrador de ventanas. [11] De acuerdo con el archivo de configuración rc.lua, la creación de temas también se realiza en Lua , lo que permite crear temas dinámicos.
Aunque la configuración awesome predeterminada a partir de la versión 3.2.1 no tiene ningún indicador de estado (como estado de la red inalámbrica, indicadores de batería, etc.), los usuarios pueden agregar estos elementos usando widgets. [12] Los datos para los widgets se suministran usando código Lua arbitrario ya que los widgets se definen en el archivo de configuración principal.
La versión 3.0, publicada el 18 de septiembre de 2008, utiliza la biblioteca XCB para comunicarse con el servidor X, [13] lo que convierte a Awesome en el primer gestor de ventanas que utiliza esta biblioteca en lugar de Xlib . Arnaud Fontaine, uno de los desarrolladores actuales de Awesome, comenzó a trabajar en el puerto XCB en enero de 2008 [14]. [5]
Arnaud Fontaine anunció el cambio a XCB en la lista de correo de XCB el 9 de abril de 2008. [13] En su mensaje a la lista, destacó las siguientes ventajas principales de usar XCB: "arquitectura modular; acceso directo a los protocolos; multiprocesamiento; solicitudes/respuestas asincrónicas". El puerto XCB se completó el mes siguiente y Danjou creó una nueva rama basada en XCB. [5]
Debido a los problemas percibidos que limitaban la expansión y personalización en la versión anterior a la 3.0 de awesome, el autor decidió integrar la configuración basada en Lua en awesome. [7] La rc1 de la nueva implementación con scripts de Lua se anunció en agosto de 2008. [15] En septiembre de 2008, la primera versión de awesome con API de Lua se completó en paralelo con la implementación de XCB. [7]
awesome se distribuye en una amplia gama de sistemas operativos tipo Unix, incluidos Arch Linux , [16] Debian , [17] Fedora Linux , Gentoo , [18] Ubuntu , [19] Source Mage , openSUSE , [20] Mageia , NixOS , FreeBSD , NetBSD y OpenBSD .
Las versiones awesome 1.0 a 1.3 (septiembre-octubre de 2007) no tenían nombre. A partir de la primera versión candidata a lanzamiento 2.0 (noviembre de 2007), awesome ha utilizado lanzamientos con nombre. [21] Los nombres de los lanzamientos están relacionados con la música. awesome v4.x utiliza el nombre de la canción de Daft Punk .