Awesome como gestor de ventanas

📆 2 de junio de 2020

Desde que cambié de portátil estaba usando Gnome como escritorio y es una muy buena opción si buscas algo bonito, que funcione y que no sea demasiado innovador. Pero en mi anterior portátil usaba PekWM, un gestor de ventanas súper ligero, que casi no consumía recursos y que era realmente rápido.

Así, que decidí usarlo de nuevo, pero como no me acordaba muy bien del nombre, en vez de instalar PekWM instalé awesome. “Cómo ha cambiado”, pensé y me puse a cacharrear. Pasó un día o dos hasta que me di cuenta del error. Pero ya era demasiado tarde, estaba atrapado.

Awesome es un gestor de ventanas tan liviano como PekWM pero además entra en la categoría de gestores de ventana en mosaico. De esta forma se aprovecha al máximo el espacio de la pantalla y se evita estar cambiando entre ventanas para encontrar la aplicación en la que quieres trabajar.

No todo es ideal. A veces es mejor disponer de la libertad de tener ventanas que puedes colocar donde quieras sin limitaciones, pero eso también es posible en el caso de awesome.

Una de las cosas que más recelos causa a los usuarios más convencionales es que no haya una herramienta gráfica de configuración. Para hacer cambios hay que editar el archivo de configuración, que se llama rc.lua y que estará en la ruta /home/usuario/.config/awesome/. Si no estuviera se puede copiar el archivo de configuración que está en /etc/awesome/ en la carpeta anterior.

Aplicaciones al inicio

Normalmente, cuando se inicia la sesión se suelen cargar un conjunto de aplicaciones que ayudan a que la experiencia de trabajo sea más agradable. En mi caso:

Para eso he añadido al final del archivo de configuración:

os.execute("programa &")

donde sustituyo programa por el cualquiera de los anteriores. Es necesario añadir el & para que se ejecute en segundo plano.

En el caso de Moc, la configuración requiere un poco más de trabajo, como veréis luego.

Lanzador de aplicaciones

Por defecto, awesome utiliza el atajo Mod4 + r para lanzar aplicaciones. Mod4 es la tecla con el logotipo del sistema operativo. Eso en otros entornos se hace con Alt + F2.

En el panel superior aparecerá una caja de texto en la que hay que escribir el nombre de la aplicación. Esa caja admite autocompletado del nombre pulsando la tecla Tab.

Buscando una alternativa me encontré con Rofi, un potente lanzador que funciona muy parecido a KISS, el lanzador de aplicaciones que utilizo en el teléfono. No se necesita utilizar el ratón, solo hay que teclear las primeras letras del nombre de la aplicación y aparece un listado con los posibles candidatos, ordenados por frecuencia o uso más reciente.

Rofi no es solo un lanzador de aplicaciones. También se puede utilizar para buscar entre las ventanas de las aplicaciones abiertas. Algo así como lo que se hace normalmente con Alt + Tab o pulsando en la barra de tareas. Pero en vez de ir cambiando hasta llegar a la aplicación deseada solo hace falta teclear las primeras letras de su nombre, lo que suele ser más rápido.

Como no quería prescindir del método original de awesome he definido una nueva combinación de teclas Mod4 + a para que se ejecute. Para que funcione hay que añadir al archivo de configuración una línea que define ese atajo.

awful.key({ modkey,}, "a", function () awful.spawn("rofi -show combi", false) end,
              {description = "show rofi", group = "launcher"}),

Música

Utilizo moc como reproductor. Antes lo tenía abierto en una terminal pero utilizarlo como servidor es mucho más práctico. Para controlarlo he creado atajos con las teclas multimedia del teclado. Además, he definido una combinación de teclas para que se muestre como notificación el autor y la canción que están sonando en ese momento.

Al final del listado de teclas en uso añadí lo siguiente:

awful.key({}, "#171", function () awful.spawn("mocp -f", false) end,
              {description = "Siguiente canción", group = "multimedia"}),

awful.key({}, "#173", function () awful.spawn("mocp -r", false) end,
              {description = "Canción anterior", group = "multimedia"}),

awful.key({}, "#172", function () awful.spawn("mocp -G", false) end,
              {description = "Play/Pausa", group = "multimedia"}),

awful.key({}, "#76", function () awful.spawn("/home/javier/scripts/current-song.sh", false) end,
              {description = "Mostrar la canción que está sonando", group = "multimedia"}),

Esta última combinación lo que hace es ejecutar un script llamado current-song.sh que se encarga de mandar una notificación con el nombre de la canción que está sonando:

#!/bin/bash
# current-song.sh

notify-send "Sonando: " "$(mocp -Q %artist,\ %title)"

Touchpad

En Gnome 3 la gestión del touchpad es muy cómoda y casi automática. En awesome no. El Tap to click no funcionaba así que tenía que utilizar siempre el botón físico del touchpad. Eso es incómodo porque al ser un touchpad bastante ancho a veces le doy al botón derecho en vez de al izquierdo. La solución, después de buscar un poco ha sido utilizar xinput:

#!/bin/bash
# Esto es lo que hay que poner para que funcione bien el touchpad:
# 11 es el identificador de mi touchpad
# 318 es la propiedad que se quiere modificar

xinput set-prop  11 318 2, 3, 0, 0, 1, 3, 2

Ajuste del brillo del monitor

También he creado atajos para las teclas de control del brillo del monitor. Para eso utilizo brightnessctl a través de dos atajos de teclado que lo enlazan a esas teclas:

awful.key({}, "#68", function () awful.spawn("brightnessctl s 5%-", false) end,
              {description = "Disminuir el brillo", group = "multimedia"}),

awful.key({}, "#69", function () awful.spawn("brightnessctl s 5%+", false) end,
              {description = "Aumentar el brillo", group = "multimedia"}),

Conclusión

Con estos cambios awesome me resulta muy cómodo. Todavía hay cosas que pulir y, probablemente, elimine algunas de las configuraciones que trae por defecto, pero cumple muy bien su cometido.

Si te animas a utilizarlo cuéntame tus experiencias. Un saludo.

Puedes compartir el enlace si te gustó: Awesome como gestor de ventanas

También puedes dejarme un mensaje:





(Esto funciona gracias a Un-static Forms)