Probando el gestor de ventanas awesome
Me he aficionado a los entornos de escritorio de estilo mosaico. Mi
favorito i3wm
ha tenido la culpa. Sin embargo, hace unos días que
vengo probando awesomewm
, otro entorno de ese tipo, del que voy a
hablar en este artículo. No demasiado profundamente, pues llevo
utilizándolo tan sólo tres días y he gastado prácticamente uno entero
en acondicionarlo un poco a mis gustos --algo que considero importante
en cualquier herramienta que utilizo--. El problema es que he gastado
bastante tiempo en pegarme con la configuración, incluso antes de
saber muy bien cómo funciona el sistema, así que empecé con algunos
palos de ciego de los que prefiero ahorrarme el esfuerzo de contarlos
aquí para centrarme en el meollo.
Instalación
La instalación fue fácil: tiré de zypper
y OpenSuse hizo el
resto; en cada distribución tirarán de su herramienta de instalación,
en la mía me bastó con escribir un escueto:
sudo zypper install awesome
Sólo tuve un problema con el paquete de awesome
que viene con
OpenSuse, la configuración por defecto. Lo digo o escribo así, tal
cual, con cursivas porque efectivamente es un defecto: no he visto
cosa más fea, ya me perdonará quien lo hiciera, pero el tema ese
es... feo. No encuentro otra palabra más políticamente correcta
porque lo primero que vino a la mente tras ver ese diseño es que el
que lo hizo tenía el gusto en el mismo sitio que las avispas su
gracia. Esto me llevó directamente al siguiente punto: la
configuración.
Configuración
Antes de que mi ordenador agarrara un virus, o algo más gordo por
tamaño despropósito, me decidí a ponerme con la configuración del
chismático. Algo sencillo en cuanto encontré algunos themes que
llevar al disco duro. Cuando los abrí me encontré un montón de código
escrito en lua
. Algo debí haber sospechado, porque quien me
recomendó este entorno es un fan de ese lenguaje.
El entorno busca el archivo de configuración
~/.config/awesome/rc.lua
en nuestro disco duro, por eso utilicé la
plantilla que viene con los themes que he mencionado arriba con la
idea de modificarlo --siempre es más sencillo que empezar uno desde
cero--. Además, la plantilla de la que partí está bastante bien
estructurada y genera algunas características que me han resultado
curiosas y útiles.
Lo primero que hice fue probar todos los themes que me había
descargado, uno a uno. Algunos más bonitos, otros más feos, pero eso
va en gustos. Más o menos, todos funcionaban de manera similar y
cualquiera de ellos era infinitamente mejor que el que viene por
defecto con OpenSuse. El funcionamiento es parecido, como digo,
porque la mayoría de la funcionalidad está situada en el fichero
rc.lua
mientras que saca todos los temas de color, fondo de
pantalla, iconos, etc., al directorio themes
donde cada uno de ellos
tiene su correspondiente theme.lua
.
Como era de esperar, lo primero que eché de menos al arrancar
awesome
fueron las combinaciones de teclas que tengo configuradas en
i3wm
y a las que estoy más que acostumbrado. Mis atajos para las
aplicaciones más habituales no funcionaban (todas), aunque sí algunas
como mod-Enter
para lanzar el terminal. Encontré además que viene con
un pichorro para lanzar el menú de aplicaciones --en la configuración
por defecto de OpenSuse además lo colocan en la barra de
widgets--; sin embargo, estoy acostumbrado a los que proporciona
rofi
. Eso fue de las cosas que primero configuré. Aún así, muchas
combinaciones me salen automáticamente como las de i3wm
, la memoria
muscular es lo que tiene.
Después de trastearlo un poco la configuración me ha quedado como muestro en la imagen:
En el punto 1, en el centro de la imagen, se puede ver el menú de acceso a las aplicaciones. Es el menú de escritorio que puedes ver en otros entornos como XFce o Gnome o Plasma.
En el 2 marco los escritorios, bueno, en realidad sus etiquetas,
porque se pueden mover independientemente de la combinación de
teclas. A ver si lo explico mejor: si utilizo la combinación de teclas
para intercambiar las etiquetas-escritorios, digamos por ejemplo 2 y
3, dejando las etiquetas tal que «1 3 2 4...» tendré que acceder al
escritorio con la etiqueta «3» con la combinación «mod-2». En algunos
de los themes se utilizan iconos o textos, pero yo he seguido con la
inercia de i3wm
de nombrarlos por números.
Además, en su propia página web hablan no de desktops sino de tags por screen, con lo que parece que el soporte multipantalla es bastante aceptable, --no lo puedo afirmar con conocimiento de causa, porque no lo he probado en modo XRandR--, pero al menos eso parece.
En algunos themes he visto que configuran varias barras, algunas con aspecto de dockers, laterales, que desaparecen cuando el cursor se aleja. En fin, muchas posibilidades que lo hacen muy flexible.
En el 3, marco un pichorro que me indica el tipo de configuración
del escritorio. En i3wm
las ventanas se distribuían básicamente de
tres manera y mantiene estable el tamaño una vez distribuidas. Esto es
muy similar a cómo funciona, casi siempre, el asunto en awesome
, sin
embargo, hay algunos modos como el magnifier que centra en pantalla
la ventana que tenga el foco y distribuye en el fondo el resto de
ventanas abiertas. Además, como se puede ver en la captura, se puede
poner un pichorro para que nos lo diga. Aparte de eso, cada ventana
se puede colocar como «flotante», «maximizada» u otras opciones que
ahora veremos. Los iconos también dependen del theme así que puedes
ajustarlos a tu gusto.
Con el 4 marco la barra de información. Como se puede apreciar es
bastante más sencillo que mi barra de bumblebee-status
. Sin embargo,
resulta que eso también aligera la carga de memoria, porque no
necesito una herramienta externa que dibuje dicha barra. A esto le
achaco que awesomewm
sea ligeramente más ligero en memoria (unos
16Kb, comprobados con free
), que i3wm
.
Las partes que añadido al código han sido mínimas. Por ejemplo, como
ya dije, estoy tan acostumbrado a utilizar los menús de rofi
, que me
lo he metido también en este entorno, con las mismas combinaciones de
teclas:
-- rofi awful.key({ modkey }, "d", function () os.execute(string.format("rofi -modi %s -show %s", 'run', 'run')) end, {description = "menu rofi", group = "launcher"}), awful.key({ modkey }, "i", function () os.execute(string.format("rofi -modi %s -show %s -show-icons", 'run', 'drun')) end, {description = "show rofi", group = "launcher"}), awful.key({ modkey }, "Tab", function () os.execute(string.format("rofi -show %s -show-icons", 'window')) end, {description = "show windows", group = "launcher"}),
He cambiado algunas cosas más: por ejemplo, todo parecía configurado
para utilizar vim
y lo he cambiado a emacs y algunas otras manías,
como cambiar el formato de fecha al estilo ISO
año-mes-día, añadir
etiquetas hasta el «0» en lugar de hasta el «5» que venían por
defecto.
Características
En mi caso, acostumbrado ya a i3wm
el funcionamiento de awesome
no
me ha sorprendido. Resulta un entorno tipo mosaico bastante flexible y
parecido al que estoy acostumbrado, exceptuando que, en ocasiones, el
modo de distribución del escritorio me sorprende situando una ventana
donde no espero. En i3wm
cuando abres una ventana nueva, por defecto
divide la pantalla en horizontal y la sitúa a la derecha de la
actual. Sin embargo, aquí depende de qué modo tengamos activado y la
puede poner horizontal abajo, horizontal arriba, vertical a la
izquierda, centrada en la pantalla, etc.
De las características generales y de diseño de software no puedo
hablar mucho, aparte de lo ya dicho sobre el lenguaje lua
. Quizá, lo
más destacable que he encontrado por su página web es el tema de que
está basado en la librería asíncrona XCB en lugar de la síncrona
Xlib.
Desde el punto de vista del usuario, muchas de las características son definidas por el mismo theme, pero aún así las voy a destacar en el artículo, porque me parecen interesantes.
Una que estoy aún empleando más de lo que debiera en la que muestro en
la pantalla. La combinación mod-s
me muestra una ventana modal con
las combinaciones de tecla definidas en el entorno y alguna
información extra, como teclas de funciones para tmux
.
Todo lo demás es muy similar, --incluso en cuanto a atajos--, a lo que
viene siendo i3wm
.
Las ventanas, además, tienen una definición que también depende del
theme
. Por ejemplo, el modo en el que está configurando el título de
las ventanas es el siguiente:
-- Add a titlebar if titlebars_enabled is set to true in the rules. client.connect_signal("request::titlebars", function(c) -- Custom if beautiful.titlebar_fun then beautiful.titlebar_fun(c) return end -- Default -- buttons for the titlebar local buttons = my_table.join( awful.button({ }, 1, function() c:emit_signal("request::activate", "titlebar", {raise = true}) awful.mouse.client.move(c) end), awful.button({ }, 2, function() c:kill() end), awful.button({ }, 3, function() c:emit_signal("request::activate", "titlebar", {raise = true}) awful.mouse.client.resize(c) end) ) awful.titlebar(c, {size = dpi(16)}) : setup { { -- Left awful.titlebar.widget.iconwidget(c), buttons = buttons, layout = wibox.layout.fixed.horizontal }, { -- Middle { -- Title align = "center", widget = awful.titlebar.widget.titlewidget(c) }, buttons = buttons, layout = wibox.layout.flex.horizontal }, { -- Right awful.titlebar.widget.floatingbutton (c), awful.titlebar.widget.maximizedbutton(c), awful.titlebar.widget.stickybutton (c), awful.titlebar.widget.ontopbutton (c), awful.titlebar.widget.closebutton (c), layout = wibox.layout.fixed.horizontal() }, layout = wibox.layout.align.horizontal } end)
Podemos analizar el resultado del código en la siguiente imagen:
La captura de pantalla se ha realizado con el modo magnifier que hace flotar la ventana activa al centro de la pantalla mientras el resto de las ventanas abiertas forman un mosaico tras ella.
Los nombres de los botones creo que son suficientemente descriptivos:
floatingbutton
hace que si está activado, la ventana se comporte de modo flotante independientemente del modo en que esté configurado el escritorio.maximizedbutton
hace que una ventana esté maximizada independientemente del modo configurado.stickybuttom
hace que cuando esté activado, la ventana se muestre en todos los escritorios, haciéndola omnipresente.ontopbutton
hace que la ventana marcada permanezca encima del resto de las ventanas.closebutton
cierra la ventana.
Además, podemos observar que en la barra de estado, entre las etiquetas de los escritorios y la información que hemos configurado, aparecen dos botones o chismáticos con el título de las ventanas activas. Funcionan también como un atajo para activar la ventana correspondiente si utilizamos el ratón, o si utilizamos el teclado, también nos indica cuál está activa --por si no quedara claro con su posición y/o colores en la pantalla--.
Conclusión
La verdad es que lo instalé y lo probé sin muchas expectativas. Estoy
contento con i3wm
y su rendimiento, pero en estos pocos días que lo
llevo utilizando el awesomewm
me ha sorprendido gratamente. De
momento lo seguiré utilizando unos días, dándole una oportunidad. En
realidad, es más complejo de configurar que i3wm
porque hay que
dominar lua
. Sin embargo, el mismo hecho le da potencia y
flexibilidad. Literalmente en un fichero rc.lua
puedes hacer
realmente lo que quieras1.
Si alguien tiene alguna duda y quiere preguntar de manera específica: están abiertos los comentarios. Quizá mi brevedad en la entrada deje en el aire más dudas que certidumbres.
Footnotes:
Lo que me recuerda por temas de seguridad, no deberías confiar en ninguna configuración que no hayas escrito tú mismo, o por lo menos revisado de forma concienzuda.
Comentarios