Niri, un compositor Wayland con mosaico desplazable
(github.com/YaLTeR)- Niri es un compositor Wayland con mosaico desplazable que organiza las ventanas horizontalmente de forma infinita
- Su diseño hace que abrir una nueva ventana no cambie el tamaño de las existentes, y cada monitor tiene una franja de ventanas independiente
- Ofrece funciones modernas como espacios de trabajo dinámicos, grupos de pestañas y gestos de mouse/touchpad
- Incluye soporte para múltiples monitores, integración con Xwayland y fractional scaling, entre otros entornos aptos para uso real
- Gracias a su alta estabilidad basada en Rust y a su optimización de rendimiento, muchos usuarios lo recomiendan para el uso diario
Descripción general
- Niri es un compositor Wayland de código abierto que admite administración de ventanas en mosaico basada en desplazamiento y ofrece una interfaz única de organización de ventanas, estable y apta para uso diario
- A diferencia de los gestores de ventanas en mosaico tradicionales, coloca las ventanas en columnas que se extienden infinitamente hacia la derecha, y al abrir cualquier ventana no cambia automáticamente el tamaño de las ya existentes
- Cada monitor tiene una franja de ventanas independiente, por lo que las ventanas no pasan al monitor vecino
Funciones principales
- Espacios de trabajo dinámicos: al estilo de GNOME, los espacios de trabajo de cada monitor se crean y gestionan dinámicamente en dirección vertical de forma independiente
- Al conectar o desconectar monitores, se conserva la disposición de los espacios de trabajo, y al reconectarlos se mantiene la estructura para volver al monitor original
- Vista general de espacios de trabajo/ventanas: modo de vista general donde se puede ver de un vistazo la composición de ventanas y espacios de trabajo
- UI integrada para capturas de pantalla y grabación, con soporte para screen casting/streaming mediante xdg-desktop-portal-gnome
- Es posible bloquear ventanas sensibles en el screen cast
- Soporta cambio dinámico de la ventana objetivo
- Gestos de touchpad/mouse, posibilidad de agrupar ventanas en grupos de pestañas, y varias opciones de distribución (márgenes, bordes, tamaño de ventana, etc.)
- Bordes con degradado (Oklab, Oklch), animaciones (usando shaders personalizados), y recarga en vivo del archivo de configuración
- Soporte para lector de pantalla para reforzar la accesibilidad
Guía de instalación y uso
- Es estable para uso real, y varios usuarios ya lo utilizan a diario con satisfacción
- Como no es un entorno de escritorio completo, se recomienda combinarlo con Waybar (panel) y Fuzzel (lanzador), entre otros
- Los proyectos relacionados, complementos y documentación se pueden consultar en awesome-niri
Entorno y compatibilidad
- Su diseño para múltiples monitores es clave, y ofrece soporte completo para DPI mixto y fractional scaling
- Puede ejecutarse sin problemas también con GPU NVIDIA
- Soporta floating windows (desde la versión 25.01)
- Soporta varios dispositivos de entrada como tabletas, touchpads y pantallas táctiles (con soporte para gestos de touchpad)
- Compatible con los principales protocolos de Wayland (layer-shell, gamma-control, screencopy, etc.)
- Xwayland (integración con xwayland-satellite, desde la versión 25.08), además de optimización para sistemas ligeros (hay registros de funcionamiento incluso en hardware modesto como Eee PC 900)
Desarrollo y comunidad
- Está implementado sobre Rust, con gran estabilidad, facilidad de mantenimiento y excelente rendimiento
- Inspirado en PaperWM (extensión de GNOME Shell), con énfasis en la independencia de cada monitor y la optimización del rendimiento
- La comunidad brinda soporte y mantiene comunicación activa en Matrix y Discord, entre otros
- Entrevistas con el desarrollador, charlas técnicas y artículos de LWN, entre otros materiales, han aparecido en medios externos
Proyectos similares
- Puede compararse con varios proyectos que implementan flujos de trabajo de mosaico desplazable, como PaperWM para GNOME Shell, karousel para KDE, scroll·papersway basados en sway/i3, hyprscrolling·hyprslidr para Hyprland y PaperWM.spoon para macOS
Contribuciones e información de código abierto
- La comunidad puede contribuir en diversas áreas, tanto de programación como no técnicas; para más detalles, consulta CONTRIBUTING.md
- La licencia es GPL-3.0
- El código está compuesto principalmente por Rust (98.9%) y cuenta con la participación de numerosos colaboradores externos
Resumen
Niri es un compositor para Wayland que combina una UX única de administración de ventanas en mosaico desplazable con múltiples funciones modernas, además de alta confiabilidad, rendimiento y accesibilidad gracias a su base en Rust. Destaca especialmente por su excelente respuesta a entornos con múltiples monitores y distintos flujos de trabajo, mientras que su ecosistema de código abierto y su comunidad también siguen creciendo activamente.
2 comentarios
Lo he usado antes; no está mal, pero cuando abres varias ventanas, el sentido del desplazamiento se pierde.
Desde el principio, además, queda demasiado lejos para moverse y ni siquiera recuerdas dónde estaba, así que al final terminas teniendo que encontrar la ventana con búsqueda basada en texto.
El método de "número de grupo", que se usa con frecuencia, es bueno para clasificar según ciertos criterios (las que usas seguido o por tipo de uso), así que es fácil de recordar.
Comentarios en Hacker News
Gracias a Niri, incluso yo, que usé xmonad durante 14 años, me cambié por completo. En Niri no hay límite de ventanas dentro del escritorio y no hace falta estar reestructurando el mosaico todo el tiempo, así que lo que antes manejaba separando varios escritorios por tema ahora lo gestiono fácilmente en un solo escritorio. Antes usaba por separado el escritorio de "editor y terminal" y el de "navegador", pero ahora es cómodo porque puedo moverme horizontalmente dentro del mismo escritorio hacia la ventana del navegador relacionada. La barrera de entrada es muy baja y funciona bien incluso con la configuración por defecto. Hubo algunos problemas de compatibilidad con Wayland, especialmente con ciertas apps como Zoom, pero con el tiempo se han ido resolviendo. Mi hardware es una System76 Bonobo WS de 2017, 2x GTX 1080, múltiples pantallas (4k con escala 2x + 2 1080p), en un entorno PopOS. No he experimentado cambios recientes más polémicos como animaciones fancy, y como soy del tipo de persona que siente que la barrera de entrada es baja si no es difícil compilar desde el código fuente, puede que mi opinión esté sesgada
Hace poco Niri mejoró la integración con xwayland-satellite, así que ahora es fácil ejecutar programas que no soportan Wayland enlace relacionado
Lo bueno de i3/sway es que puedes asignar escritorios por tema (navegador, código, Slack, etc.), así que con solo una tecla vas directo al escritorio que necesitas, y la eficiencia era muchísimo mayor que en MacOS, donde dependía de CMD+Tab o Mission Control. El enfoque de desplazamiento de Niri más bien me da la impresión de estar buscando ventanas sin rumbo, así que me resulta raro
Yo también usé i3 más de 10 años, pero apenas probé Niri tuve un momento de "¡ah, ya entendí!". Las builds recientes agregaron una función tipo "minimapa" con zoom hacia afuera, y sirve mucho cuando a veces te confundes sobre dónde estás
Lo único que realmente extraño en Niri es una scratch layer. Hay apps que no necesariamente deben estar en mosaico y deberían poder abrirse de inmediato desde cualquier lugar; por ejemplo, un cliente de Matrix como mensajería para responder rápido. Lo mismo con los reproductores multimedia. Paperwm de GNOME sí tiene esa función
Llevo más de 7 años usando i3, y no termino de entender por qué sería mejor el enfoque de desplazamiento. Los WM en mosaico tienen muchas capturas bonitas, pero me pregunto cuánto ayudan realmente a la productividad. También tengo curiosidad por cómo funciona al desplazarte horizontalmente; por ejemplo, si pasas de un editor en pantalla completa a un navegador que solo se ve a la mitad, no sé si el editor se recorta o se comprime. Y también me gustaría que existiera un WM en mosaico con navegador más integrado profundamente con dmenu
Llevo varios meses usando Niri en mi escritorio principal y escribí mi experiencia en LWN. Los WM/compositores en mosaico tradicionales no me terminaban de funcionar, pero el modelo de mosaico de Niri sí me encaja perfectamente. Antes de Niri usaba PaperWM y extensiones de GNOME, pero si COSMIC añadiera mosaico con desplazamiento, probablemente seguiría usando Niri de todos modos
Parece posible que el equipo de COSMIC agregue esa función después del lanzamiento 1.0. Mientras tanto, un empleado de System76 creó una extensión no oficial para poder usar otros compositores, incluido Niri
Yo también dudé al pasar de PaperWM a Niri. En PaperWM era muy cómodo no tener que configurar cada app por separado y poder aprovechar las funciones nativas de GNOME tal cual, como el lanzador, la configuración, el bloqueo, los widgets de audio/red, etc. Pero PaperWM tenía sus complicaciones, como bugs ocasionales al redimensionar ventanas o problemas sutiles con el tamaño vertical. Al final, Niri resultó mucho más claro
Si COSMIC solo añadiera el mosaico, sería fantástico. Me gusta muchísimo COSMIC, solo le falta eso
Tenía curiosidad por la diferencia con COSMIC y esto me ayudó
En este momento Niri está explotando en popularidad y el desarrollador está sobrecargado. Si quieren contribuir, mejor apoyen a Ivan o ayuden revisando otros PR antes de abrir uno propio. Tanto Niri como Smithay destacan por su alta calidad, y con el tiempo siguen sumando funciones sin problemas críticos
Me pregunto cuánto ayuda realmente que alguien común revise un PR por adelantado. Al final, el maintainer siempre lo va a revisar por su cuenta antes de hacer merge, y para quien contribuye quizá hasta resulte molesto que alguien con conocimiento superficial se ponga a opinar
Si usas Niri todos los días, deberías mostrar al menos algo de agradecimiento; yo ya hice una donación. Por cierto, comparto mi setup por si le sirve de inspiración a alguien enlace del setup
Si eres usuario de Hyprland, me da curiosidad por qué deberías cambiarte a Niri, y si la función de ventanas infinitas es el mayor atractivo
Enlace para apoyar
En MacOS siempre tengo todo en pantalla completa y voy cambiando entre ventanas con cmd-tab/cmd-backtick, y de verdad envidio el workflow de tiling en Linux. Me frustra no poder reproducir algo así en MacOS, y por políticas de la empresa tampoco puedo pasarme a Linux. Creo que mucha gente se va a identificar con esa frustración de conocer un workflow mejor pero no poder aplicarlo
Durante el último mes he estado porteando komorebi a MacOS; el layout con desplazamiento no llega al nivel de Niri, pero funciona bien en ambas plataformas. Video 1 Video 2
En una situación parecida, en la que solo podía usar MacOS, yo llegué a correr Linux dentro de una máquina virtual a pantalla completa. Técnicamente seguía siendo MacOS, así que IT no ponía problemas y también pasaba las políticas de seguridad. En algunas empresas incluso cubren la licencia de VMware
Entre los gestores de ventanas para Mac, Aerospace fue el mejor
Yo uso el gestor de ventanas Yabai en Mac, y con monitores grandes va muy bien, pero cuando trabajaba solo con una laptop terminaba con apenas una o dos ventanas por espacio y no encontré un workflow adecuado
Recomiendo flashspace. Si asignas workspaces a teclas al abrir apps en pantalla completa, puedes cambiar al instante sin animaciones
No había probado Niri porque el archivo de configuración estaba limitado a uno solo, y eso era incómodo cuando querías mantener entornos ligeramente distintos entre varios equipos, por ejemplo aplicando configuraciones locales ignoradas por git. Pero hace poco hicieron merge de dos PR importantes y ahora se pueden hacer overrides/includes por usuario, como en este PR relacionado. Todavía no salió en una release, pero espero que llegue pronto
Me intriga por qué sería bueno un WM en mosaico nuevo, viniendo de alguien que solo ha usado xmonad por más de 15 años. También me pregunto qué ventaja real tienen los compositores Wayland aparte de ser simplemente "mosaico + Wayland". Sobre todo porque antes, cada vez que probaba Wayland, siempre había bugs graves frente a X11, especialmente con Nvidia
En el último año volví a probar Wayland en un entorno Nvidia+Arch+Gnome3+Wayland, y ahora casi todo funciona sin problemas. Firefox en particular se siente inusualmente fluido y eficiente
Wayland todavía tiene problemas cuando haces cosas específicas, por ejemplo no poder rotar la orientación de una tableta gráfica. Aun así, con Nvidia funciona bien desde la versión 570 del driver
Importa mucho en qué distribución de Linux lo usaste. Yo llevo mucho tiempo usando Wayland en Fedora, y tanto en equipos Intel como Nvidia no tuve grandes problemas
Tuve una experiencia parecida; usé xmonad desde 2009 hasta 2023, con una pausa intermedia porque borré mi configuración por accidente con
rm, y luego me cambié a Niri. Los motivos detallados están aquí. En PopOS, con 2x GTX 1080 y múltiples pantallas, funciona sin problemas. Lo recomiendo totalmenteProbé Wayland en una Asus Rog G14 + Nvidia 3060 y, pese a lo desconfiado que estaba, funcionó bien enseguida con solo configurar
drm.modeset. También reconoció sin problema dos monitores externos, uno por HDMI y otro por DP over USB-C. Salvo por el daisy chain, quedé satisfecho. Es una experiencia reciente, así que aún no he pasado por todos los casos, pero en mi caso funciona mejor que XHace unas semanas pasé de i3 a Niri y estoy muy satisfecho. La forma en que se usan las ventanas y los workspaces encaja de manera más natural con mis hábitos. Trabajo por proyecto dentro de un workspace, y aunque abra temporalmente una terminal o un navegador a la derecha, no afecta ni reacomoda las demás ventanas, así que es muy cómodo para consultas puntuales o ejecutar comandos. El único problema es que ahora de verdad quiero un monitor ultrawide
Un ejemplo de aplicar el concepto de Niri a Sway: scroll
Ayer reinstalé PopOS y me cambié a Niri, y me adapté enseguida de forma muy intuitiva. A diferencia de cuando usaba i3wm, ya no tengo que preocuparme en absoluto por redimensionar ventanas, y en Niri casi nunca hace falta reacomodar nada aunque crezcan dentro del workspace, así que mi concentración mejoró muchísimo. Mi equipo es RTX 3090, Pop OS 24.04 beta, monitor 4K de 43 pulgadas, y fue fácil instalar Niri con
cargo build. Para ejecutar apps X11 como VS Code, Obsidian, Zoom o Blender, sí es indispensable instalar xwayland-satelliteDespués de personalizar Hyprland y quedarme con varias frustraciones, volví a GNOME, sobre todo porque necesitaba cosas como decenas o cientos de pestañas del navegador y extensiones de bandeja. Pero como GNOME rompe la compatibilidad de extensiones en cada actualización, ya decidí salir completamente de GNOME. Esta vez probé River, QTile y Niri, y terminé quedándome con Niri mientras voy agregando poco a poco las funciones que necesito por mi cuenta. El agrupamiento dinámico de workspaces es intuitivo y cómodo, y también puedo configurar los atajos de teclado a mi gusto. Voy complementando el DE con waybar y swaync. También me estoy divirtiendo escribiendo scripts con herramientas de automatización como Claude Code/Codex. Por ejemplo, he estado probando varias cosas como niri-workspaces para mostrar la actividad actual de ventanas en waybar, niri-workspace-names con integración con fuzzel para renombrar workspaces, un AltTab personalizado, etc. Algo como miniaturas en vivo probablemente ya sería un proyecto grande. Gracias a los nuevos agentes de código, ahora puedo cambiar bastante mi entorno tal como quiero incluso sin documentación detallada