AwesomeWM: Complete guide to customize your Linux desktop

AwesomeWM es un gestor de ventanas de tiling altamente configurable escrito en Lua y basado en el servidor X. Su filosofía se centra en ofrecer un entorno ligero, rápido y totalmente adaptable mediante archivos de configuración en lenguaje de programación. Este artículo te guiará desde la instalación hasta la personalización avanzada, mostrando cómo aprovechar al máximo sus características para crear un flujo de trabajo eficiente y estéticamente agradable.

¿Qué es AwesomeWM?

AwesomeWM pertenece a la familia de los gestores de ventanas de tiling, lo que significa que organiza automáticamente las aplicaciones en diseños no superpuestos, aprovechando todo el espacio de la pantalla. A diferencia de los entornos de escritorio tradicionales, no incluye barras de tareas ni menús prediseñados; todo se construye a través del archivo rc.lua. Esta arquitectura permite a los usuarios definir comportamientos específicos mediante código, lo que resulta en una personalización sin límites.

Installation in popular distributions

  • In Ubuntu or Debian:sudo apt install awesome
  • In Fedora:sudo dnf install awesome
  • In Arch Linux:sudo pacman -S awesome
  • In openSUSE:sudo zypper install awesome

Tras la instalación, inicia sesión seleccionando Awesome desde el gestor de display (GDM, LightDM, SDDM, etc.). Al entrar, verás un escritorio minimalista con una barra superior (wibox) y un teclado listo para ser configurado.

Basic structure of the configuration file

El archivo principal se encuentra en ~/.config/awesome/rc.lua. Al copiar la plantilla predeterminada (/etc/xdg/awesome/rc.lua) a tu directorio personal, puedes comenzar a modificarla sin afectar al sistema.

Algunas secciones clave:

  • variables: definición de fuentes, colores, bordes y modificadores.
  • layouts: arreglos de tiling como layout.suit.tile, layout.suit.floating, layout.suit.max y más.
  • tags: espacios de trabajo equivalentes a escritorios virtuales, cada uno con su propio layout predeterminado.
  • menú y lanzadores: creación de un menú de aplicaciones y atajos de teclado.
  • wibox: barra superior o inferior donde se agregan widgets como reloj, batería, uso de CPU y bandeja del sistema.

Personalizando tags y layouts

Los tags permiten organizar tus aplicaciones por proyecto o tipo de tarea. Por ejemplo, puedes crear un tag para desarrollo, otro para navegación y uno para multimedia. En rc.lua define la tabla tags así:

tags = {
   names  = { ' Dev', ' Web', ' Docs', ' Chat', ' Misc' },
   layout = { layouts[1], layouts[2], layouts[1], layouts[1], layouts[3] }
}

Cada nombre puede incluir símbolos de fuentes como Font Awesome para darle un toque visual. Los layouts se asignan por tag, pero puedes cambiar dinámicamente con ModKey + Space o mediante funciones Lua personalizadas.

Agregando y configurando widgets en la wibox

La wibox es la barra donde se muestra información del sistema. Los widgets se crean con la biblioteca wibox.widget. Algunos ejemplos comunes:

  • Reloj: wibox.widget.textclock
  • Batería: wibox.widget.battery (requiere el paquete awesome-widgets o script propio)
  • Uso de CPU: awful.widget.watch combinado con mpstat
  • Volumen: awful.widget.volume
  • Bandeja del sistema: wibox.widget.systray

Para añadirlos, crea un wibox por pantalla y asigna su propiedad widgets con una tabla ordenada de izquierda a derecha:

mywibox[s] = awful.wibar({ position = 'top', screen = s })
mywibox[s]:setup {
   layout = wibox.layout.align.horizontal,
   { -- Left widgets
      layout = wibox.layout.fixed.horizontal,
      mylauncher,
      mytaglist[s],
      mypromptbox[s],
   }
   mytasklist[s], -- Middle widget
   { -- Right widgets
      layout = wibox.layout.fixed.horizontal,
      mykeyboardlayout,
      wibox.widget.systray,
      mytextclock,
   }
}

Con este enfoque puedes reordenar, ocultar o mostrar widgets según tus necesidades.

Atajos de teclado y reglas de clientes

AwesomeWM permite vincular cualquier acción a combinaciones de teclas mediante la tabla keys. Por ejemplo:

  • ModKey + Return abre la terminal predeterminada.
  • ModKey + Shift + c cierra el cliente enfocado.
  • ModKey + t fuerza el modo flotante para la ventana actual.
  • ModKey + Shift + r recarga la configuración sin cerrar la sesión.

Además, puedes definir reglas que se apliquen automáticamente cuando se abra una aplicación, como establecer su tag, modo flotante o bordes específicos:

awful.rules.rules = {
   { rule = { class = 'Firefox' },
     properties = { tag = tags[1][2], switchtotag = true } },
   { rule = { class = 'Gimp' },
     properties = { floating = true } }
}

Esto garantiza que Firefox siempre abra en el tag de desarrollo y que Gimp se comporte como ventana flotante.

Resources and community

La documentación oficial () es el punto de partida más confiable. Además, la comunidad mantiene repositorios de temas y widgets en GitHub bajo organizaciones como awesome-copycats y awesome-freedesktop. Foros como Reddit r/awesomewm y el canal de IRC #awesome en Libera.Chat son excelentes lugares para preguntar, compartir configuraciones y descubrir trucos avanzados.

Conclusion

AwesomeWM ofrece una combinación única de ligereza, potencia y flexibilidad que lo convierte en una opción ideal para usuarios que desean controlar cada aspecto de su entorno de trabajo en Linux. Aunque la curva de aprendizaje inicial puede parecer empinada debido a su enfoque basado en Lua, la inversión se traduce en un escritorio altamente eficiente, estéticamente personalizable y totalmente adaptado a tu flujo de trabajo. Con los conceptos y ejemplos presentados aquí, ya estás listo para explorar, modificar y llevar tu experiencia con AwesomeWM al siguiente nivel.

This work is under aCreative Commons License Attribution 4.0 International for Francesc Roig francesc @ vivaldi.net.

EnglishenEnglishEnglish