701 - Niri, un gestor de ventanas diferente

701 - Niri, un gestor de ventanas diferente

Descubre un nuevo gestor de ventanas para #Linux que usa scroll en lugar de escritorios fijos. Una forma distinta de organizar tu escritorio.

1:25
-3:15

En estos últimos meses he estado utilizando GNOME mayoritariamente, aunque de forma puntual pasaba a Sway o i3, dependiendo de las tareas que estuviera haciendo. Sin embargo, de unas semanas hacia aquí, la cosa se ha invertido. En lugar de estar mas tiempo en GNOME, ahora estoy mas tiempo en Niri, que es un gestor de ventanas de tipo tiling o mosaico, pero un tanto diferente a lo que has visto hasta el momento. Con Niri, las ventanas se colocan en un scroll horizontal infinito.

Niri, un gestor de ventanas diferente

Un paseo por el pasado

Los tiling window manager son el paradigma de la productividad. Y esto es así por que se apoya en dos pilares fundamentales, que son, por un lado abandonar el uso del ratón, y por el otro la facilidad que tienes para moverte entre las distintas ventanas que tienes en tu entorno de escritorio.

Por supuesto que como he mencionado en otras ocasiones, los tiling tienen el inconveniente de que no son entornos de escritorios, sino que son una pieza mas del entorno de escritorio, con lo que necesitas dedicarles un tiempo importante para terminar de construirte tu entorno de escritorio.

Durante estos últimos meses he estado utilizando mas GNOME con X11 para poder implementar algunas extensiones para este entorno de escritorio. Sin embargo, en un 20% de las ocasiones, sobre todo cuando tengo que escribir y centrar el foco regreso a los tiling.

En el caso de los tiling, he ido probando distintas opciones, empezando por Bspwm, pasando por I3, y últimamente Hyprland y Sway. La comodidad de Sway y ser un I3 para wayland me hacían sentir muy cómodo. Sin embargo, cuando Antonio comentó lo opción de Niri, quise darle una segunda oportunidad, mas a fondo… Mas que nada por aquello de estar implementado en Rust, que como sabes es mi ojito derecho. Y la verdad, me ha gustado tanto como para quedarme un rato con él.

¿Que es Niri?

Niri es un gestor de ventanas de tipo tiling que se basa en un concepto diferente al que estamos acostumbrados. En lugar de organizar las ventanas en mosaico vertical u horizontal, Niri utiliza un scroll horizontal infinito. Esto significa que puedes abrir tantas ventanas como quieras y desplazarte a lo largo de ellas sin limitaciones.

Esto es algo que de principio te tengo que decir que me trae sentimientos encontrados. Por un lado, lo que mas me gusta de un tiling es la ventaja de tenerlo todo siempre delante de tus ojos. Sin embargo, me encuentro en ocasiones en que poder maximizar una aplicación y que se oculte el resto me resulta muy positivo para trabajar. En este sentido, Niri, lo hace estupendamente.

Características de Niri

Niri no es un gestor de ventanas más. Está construido desde cero pensando en una idea radical: un sistema de ventanas en mosaico desplazable, donde en lugar de reacomodar el escritorio, lo recorres con scroll. Y no se queda ahí. Incorpora espacios de trabajo dinámicos al estilo de GNOME, que se crean y desaparecen según los necesites. Además, incluye una vista general el famoso overview que te permite alejar la perspectiva para ver de un vistazo todas las ventanas y espacios abiertos, algo especialmente útil para quienes gestionamos muchas tareas al mismo tiempo. Esta vista de pájaro, me resulta muy útil para ver donde estoy.

Otra de las maravillas de Niri es su integración con herramientas modernas de captura de pantalla y grabación. Gracias al soporte para xdg-desktop-portal-gnome, puedes hacer screencasting de ventanas o monitores, incluso elegir dinámicamente qué mostrar, y bloquear ventanas sensibles para que no se vean en las grabaciones. Todo esto sin tener que instalar nada raro, simplemente usando PipeWire y herramientas estándar. Esto de bloquear ventanas sensibles, todavía no lo he probado en algún vídeo, pero, me parece todo un acierto, aunque yo hubiera preferido difuminar mas que hacerlo todo negro.

El escritorio no solo es funcional, también puede ser bonito y personal. Niri permite personalizar el diseño del mosaico: definir bordes, huecos entre ventanas, tamaños, incluso aplicar gradientes de color con soporte para Oklab y Oklch. También puedes añadir animaciones con degradados personalizados, lo cual le da un toque moderno y fluido sin perder rendimiento. Por si fuera poco, puedes agrupar ventanas en pestañas dentro de una misma columna, ahorrando espacio vertical, algo perfecto para terminales o editores de texto. Esta opción de utilizar pestañas o filas dentro de una columna, tiene mucho potencial

Y como no podía ser de otra forma en un entorno pensado para usuarios exigentes, Niri permite recargar su configuración en vivo, sin reiniciar la sesión. Esto, tiene un peligro brutal, si no tienes cuidado, entras en toda una madriguera de conejo, de la que no es seguro que puedas salir en todo un fin de semana. Todos los cambios que hagas en el archivo de configuración se aplican al instante.

Además, ofrece soporte para gestos de touchpad, ratón y pantalla táctil, haciendo que la experiencia sea tan cómoda como potente. Esto, es precisamente lo que menos he probado hasta el momento, porque, como sabes, para mi, la principal ventaja de un tiling es precisamente su gestión completa con el teclado.

Instalación de Niri

Niri está disponible para instalar en distintas distribuciones directamente desde los repositorios oficiales. En el caso particular de Arch, es tan sencillo como ejecutar un,

sudo pacman -S niri

Una vez instalado, puedes iniciar Niri desde la terminal con el comando niri o configurarlo para que se inicie automáticamente al arrancar tu sesión. En el caso de que estés utilizando un gestor de inicio de sesión como GDM, lo tendrás disponible al inicio.

Recuerda que Niri es un gestor de ventanas, con lo que no tiene la mayoría de herramientas a las que estás acostumbrado en tu entorno de escritorio, y necesitarás instalarlas y configurarlas. Por ejemplo,

Aquí tienes un listado de herramientas recomendadas para convertir Niri en un entorno de escritorio completo y funcional, con una descripción breve de cada una al estilo de Atareao con Linux:

  • Swaybar: barra de estado moderna y personalizable para mostrar la hora, batería, red, volumen y mucho más.
  • SwayNotificationCenter: gestor de notificaciones ligero para Wayland que se integra perfectamente con Niri.
  • Ulauncher: lanzador de aplicaciones simple y rápido, perfecto como reemplazo de rofi en Wayland.
  • Swaybg: utilidad para establecer el fondo de pantalla, ideal para entornos basados en Sway o Niri.
  • Mpvpaper: Similar a Swaybg pero en este caso pensado para vídeos.
  • Swaylock: herramienta para bloquear la pantalla de forma segura desde Wayland.
  • Swayidle: gestiona el bloqueo y el apagado automático de pantalla según la inactividad del usuario.
  • Alacritty: emulador de terminal rápido y configurable, ideal como terminal por defecto en Niri.
  • xdg-desktop-portal-gnome: proporciona integración para capturas de pantalla y screencasting en apps como OBS o Firefox.
  • Pipewire: backend multimedia moderno que permite el uso eficiente de audio y vídeo, incluyendo grabación de pantalla.
  • xwayland-satellite: complemento para ejecutar aplicaciones X11 dentro de Niri, como Steam o herramientas de diseño.

Configuración de Niri

Configurar Niri es tan sencillo como editar un archivo en formato KDL que encontrarás en ~/.config/niri/config.kdl. Lo mejor de todo es que los cambios se aplican en tiempo real: no necesitas reiniciar la sesión. Esto convierte a Niri en un entorno ideal para experimentar y ajustar hasta el último detalle sin interrumpir tu flujo de trabajo. Desde el primer momento, puedes definir cómo se comportan las ventanas, cómo se agrupan o se muestran, y qué atajos de teclado usar para cada acción.

Te indico a continuación los cambios que he introducido para personalizar Niri ya adaptarlo a mis necesidades.

  • Modificación de la disposición de teclado para que se adapte a mi teclado español. Esto lo puedes hacer en input.keyboard.xkb.layout
  • Definición de las dos pantallas. Aquí tengo dos output, uno como DP-1 y otro como HDMI-A-1, que se corresponde con los dos monitores. En el caso del monitor que tengo a la derecha añadí la posición indicando position x=1920 y=0.
  • Modifiqué los altos predefinidos de la siguiente forma,
preset-window-heights {
    proportion 0.33333
    proportion 0.5
    proportion 0.66667
    proportion 1.0
}

Y de la siguiente forma los anchos,

preset-window-widths {
    proportion 0.33333
    proportion 0.5
    proportion 0.66667
    proportion 1.0
}

Respecto a las aplicaciones que inicio cuando arranca Niri, tengo definido lo siguiente,

spawn-at-startup "dbus-update-activation-environment" "--systemd" "DISPLAY WAYLAND_DISPLAY" "XDG_CURRENT_DESKTOP=GNOME"
spawn-at-startup "swaync"
spawn-at-startup "waybar"
spawn-at-startup "mpvpaper" "-vp" "-o" "no-audio loop" "DP-1" "~/backgrounds/wavy-grass-moewalls-com.mp4"
spawn-at-startup "mpvpaper" "-vp" "-o" "no-audio loop" "HDMI-A-1" "~/backgrounds/wavy-grass-moewalls-com.mp4"
// Apaga las pantallas después de 30 minutos de inactividad.
spawn-at-startup "swayidle" "-w" "timeout" "1800" "niri msg action power-off-monitors"
spawn-at-startup "ulauncher"

A parte de esto, he cambiado algunos atajos de teclado, pero todavía no me encuentro suficientemente cómodos con los que están definidos por defecto. Les tengo que dar una vuelta y pensarlos con detenimiento para quedarme totalmente satisfecho con la configuración.

Sea como fuere, puedes encontrar mi configuración completa de Niri en los dotfiles.

Conclusión

Me encuentro igual de cómodo como con otros tiling y eso que no le he dedicado tanto tiempo como en otras ocasiones. Como te decía anteriormente, todavía me queda darle una vuelta a la configuración de los atajos de teclado, pero, aún así, lo cierto es que me resulta muy cómodo, aún no teniendo todas las ventanas a la vista, como suele suceder con los tiling tradicionales.

Seguro que en siguientes episodios te seguiré hablando sobre Niri, para ir contándote mi propia experiencia.


Más información,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *