Niri, um compositor Wayland com tiling rolável
(github.com/YaLTeR)- Niri é um compositor Wayland com tiling rolável que organiza janelas horizontalmente de forma infinita
- Uma estrutura em que o tamanho das janelas existentes não muda ao abrir novas janelas, e cada monitor tem sua própria faixa de janelas independente
- Oferece recursos modernos como workspaces dinâmicos, grupos de abas e gestos de mouse/touchpad
- Suporta vários ambientes adequados para uso real, como múltiplos monitores, integração com Xwayland e fractional scaling
- Com alta estabilidade baseada em Rust e otimização de desempenho, é recomendado por muitos usuários para uso diário
Visão geral
- Niri é um compositor Wayland de código aberto que oferece gerenciamento de janelas em tiling baseado em rolagem, com uma interface única de organização de janelas estável o suficiente para uso diário
- Diferentemente dos tiling window managers tradicionais, ele posiciona as janelas em colunas que se estendem infinitamente para a direita e não redimensiona automaticamente as janelas existentes ao abrir uma nova janela
- Cada monitor tem sua própria faixa de janelas independente, e as janelas não passam automaticamente para monitores vizinhos
Principais recursos
- Workspaces dinâmicos: no estilo do GNOME, workspaces independentes por monitor são criados e gerenciados dinamicamente na direção vertical
- Ao conectar ou desconectar monitores, a disposição dos workspaces é preservada, e ao reconectar, eles retornam ao monitor original
- Visão geral de workspaces/janelas: modo de visão geral em que a disposição das janelas e workspaces pode ser vista de relance
- UI integrada de captura de tela e gravação, com suporte a screen casting/streaming via xdg-desktop-portal-gnome
- É possível bloquear janelas sensíveis no screencast
- Suporte à alteração dinâmica da janela de destino
- Gestos de touchpad/mouse, agrupamento de janelas em grupos de abas e várias opções de layout (margens, bordas, tamanho das janelas etc.)
- Bordas com gradiente (Oklab, Oklch), animações (com uso de shaders personalizados) e live reload do arquivo de configuração
- Suporte a leitor de tela para melhorar a acessibilidade
Instalação e uso
- É estável o bastante para uso real, e vários usuários o utilizam no dia a dia com satisfação
- Como não é um ambiente de desktop completo, recomenda-se usá-lo em conjunto com Waybar (painel) e Fuzzel (launcher)
- Projetos relacionados, addons e documentação podem ser encontrados em awesome-niri
Ambiente e compatibilidade
- O design para múltiplos monitores é central, com suporte completo a DPI misto e fractional scaling
- Funciona sem problemas também com GPUs NVIDIA
- Suporte a floating windows (a partir da versão 25.01)
- Suporte a vários dispositivos de entrada, como tablet, touchpad e touchscreen (com suporte a gestos de touchpad)
- Compatível com os principais protocolos Wayland (layer-shell, gamma-control, screencopy etc.)
- Xwayland (integração com xwayland-satellite, a partir da versão 25.08) e otimização para sistemas leves (há registros de uso até mesmo em máquinas modestas como o Eee PC 900)
Desenvolvimento e comunidade
- Implementado em Rust, oferece excelente estabilidade, facilidade de manutenção e desempenho
- Inspirado no PaperWM (extensão do GNOME Shell), com foco na independência de cada monitor e na otimização de desempenho
- A comunidade oferece suporte e mantém comunicação ativa em Matrix e Discord
- Entrevistas com o desenvolvedor, apresentações técnicas e artigos da LWN já apresentaram o projeto em mídias externas
Projetos semelhantes
- Pode ser comparado com vários projetos que implementam fluxos de trabalho de tiling rolável, como PaperWM para GNOME Shell, karousel para KDE, scroll e papersway baseados em sway/i3, hyprscrolling e hyprslidr para Hyprland, e PaperWM.spoon para macOS
Contribuição e informações de código aberto
- A comunidade aceita contribuições em várias áreas de programação e não programação; para mais detalhes, consulte o CONTRIBUTING.md
- A licença é GPL-3.0
- O código é composto principalmente por Rust (98,9%), com participação de muitos contribuidores externos
Resumo
Niri é um compositor para Wayland que combina uma UX própria de gerenciamento de janelas em tiling rolável com vários recursos modernos, além de alta confiabilidade, desempenho e acessibilidade graças à base em Rust. Destaca-se especialmente pelo excelente suporte a múltiplos monitores e a diferentes fluxos de trabalho, enquanto seu ecossistema open source e sua comunidade também continuam crescendo ativamente.
2 comentários
Já usei antes; não é ruim, mas quando você abre várias janelas, a ideia da rolagem acaba perdendo o sentido.
Para começar, fica longe demais para se mover, e você nem lembra onde estava, então acaba tendo que encontrar a janela com busca baseada em texto.
O método de "número de grupo", que é usado com frequência, é bom para classificar segundo certos critérios (janelas usadas com frequência ou por finalidade), então é fácil de lembrar.
Comentários do Hacker News
Graças ao Niri, até eu, que usei xmonad por 14 anos, migrei completamente. No Niri não há limite para o número de janelas dentro do desktop, e como não é preciso ficar reorganizando a estrutura de tiles o tempo todo, o que antes eu separava em vários desktops por tema agora consigo gerenciar facilmente em um só. Antes eu separava o desktop de "editor e terminal" do desktop de "navegador", mas agora é prático ficar no mesmo desktop e ir até a janela de navegador relacionada só me movendo horizontalmente. A barreira de entrada é muito baixa e ele funciona bem só com a configuração padrão. Houve alguns problemas de suporte a Wayland, especialmente com certos apps como Zoom, mas isso vem sendo resolvido com o tempo. O hardware é um System76 Bonobo WS de 2017, 2x GTX 1080, várias telas (4k com escala 2x + 2 telas 1080p), em ambiente PopOS. Não passei pelas mudanças mais polêmicas recentes, como animações mais extravagantes, e como eu sou do tipo que acha baixa a barreira de entrada se não for difícil compilar o código-fonte e usar, minha opinião pode ser enviesada
Recentemente o Niri melhorou a integração com
xwayland-satellite, o que facilitou rodar programas que não têm suporte a Wayland link relacionadoO bom do i3/sway é poder atribuir desktops por tema (navegador, código, Slack etc.), então com um único atalho você vai direto ao desktop necessário, e a eficiência no trabalho era absurdamente maior do que no macOS, que depende de CMD+Tab ou Mission Control. O modo de rolagem do Niri me parece o oposto, como se eu fosse ficar procurando janela
Também usei i3 por mais de 10 anos, mas no momento em que usei Niri tive aquele momento de "ahá!". Nas builds recentes surgiu uma função de zoom out parecida com um "minimapa", que é útil quando às vezes fico confuso sobre onde estou
A única coisa que sinto falta no Niri é uma scratch layer. Alguns apps não precisam necessariamente ficar em tiling e deveriam poder ser puxados instantaneamente de qualquer lugar, por exemplo mensageiros como um cliente Matrix, para responder na hora. O mesmo vale para players de mídia. O PaperWM do GNOME tem esse recurso
Uso i3 há mais de 7 anos e não entendo muito bem por que o modo de rolagem seria bom. Como tile WM costuma render screenshots bonitas, fico curioso sobre quanto isso realmente ajuda na produtividade. Queria entender como funciona ao mover horizontalmente; por exemplo, se eu sair de um editor em tela cheia para um navegador que aparece só pela metade, o editor é cortado ou comprimido? E também seria bom existir um tile WM que fosse navegador também e mais profundamente integrado ao
dmenuEstou usando Niri no desktop principal há alguns meses, e escrevi um relato no LWN. Os tile WMs/compositores tradicionais não funcionavam muito bem para mim, mas o modelo de tiling do Niri encaixa perfeitamente. Antes do Niri eu usava PaperWM e extensões do GNOME, mas se o COSMIC adicionar tiling com rolagem, provavelmente ainda assim pretendo continuar no Niri
Acho que a equipe do COSMIC talvez adicione esse recurso depois do lançamento 1.0. Enquanto isso, um funcionário da System76 criou uma extensão não oficial para permitir o uso de outros compositores, incluindo o Niri
Eu também hesitei ao migrar do PaperWM para o Niri. No PaperWM era muito conveniente não precisar configurar vários apps separadamente, porque os recursos nativos do GNOME (launcher, configurações, lock screen, widgets de áudio/rede etc.) eram ótimos, mas o próprio PaperWM às vezes era chato por causa de bugs de redimensionamento de janela e problemas de dimensionamento vertical. No fim, o Niri foi muito mais claro
Se o COSMIC ganhar só o tiling já seria fantástico. Eu gosto muito do COSMIC, só falta isso
Eu estava curioso sobre a diferença em relação ao COSMIC, isso ajudou
No momento o Niri está explodindo em popularidade, e o desenvolvedor está sobrecarregado. Se quiser contribuir, ajude patrocinando o Ivan ou revisando outros PRs antes de abrir o seu. Tanto o Niri quanto o Smithay têm qualidade muito alta, e vêm ganhando recursos com o tempo sem problemas críticos
Tenho dúvida sobre o quanto realmente ajuda quando uma pessoa comum revisa um PR antes. No fim, o mantenedor sempre vai revisar tudo pessoalmente antes de fazer merge, e para quem contribui pode até ser desagradável ver alguém com conhecimento superficial opinando
Se você usa Niri todos os dias, deveria demonstrar gratidão; eu já fiz uma doação. Aliás, estou compartilhando meu setup caso inspire alguém link do setup
Se eu fosse usuário de Hyprland, eu gostaria de entender por que deveria migrar para o Niri, e se o principal atrativo é mesmo a funcionalidade de janelas infinitas
Link para patrocínio
No macOS eu sempre deixo tudo em tela cheia e alterno janelas com cmd-tab/cmd-backtick, e morro de inveja do workflow de tiling de verdade no Linux. É frustrante não conseguir reproduzir isso no macOS, mas também não posso migrar para Linux por regras da empresa. Acho que muita gente se identifica com essa frustração de conhecer um workflow melhor e não poder colocá-lo em prática
No último mês estive portando o komorebi para macOS; o layout com rolagem talvez não seja tão bom quanto o do Niri, mas funciona bem nas duas plataformas. vídeo1 vídeo2
Numa situação parecida, em que eu também só podia usar macOS, cheguei a rodar Linux numa máquina virtual em tela cheia. Tecnicamente continuava sendo macOS, então o time de TI não implicou, e as políticas de segurança continuaram valendo. Em algumas empresas até dão licença do VMware
Entre os window managers para Mac, o Aerospace foi o melhor que usei
Eu uso o window manager Yabai no Mac, e em monitor grande ele é muito bom, mas usando só um notebook eu acabava ficando com apenas uma ou duas janelas por space e não encontrei um workflow adequado
Recomendo o flashspace. Quando você abre apps em tela cheia, pode atribuir workspaces a teclas e alternar instantaneamente sem animação
O motivo de eu nunca ter tentado o Niri era que o arquivo de configuração era limitado a um único arquivo, o que era inconveniente para manter ambientes um pouco diferentes em vários dispositivos, como aplicar configurações locais específicas ignoradas pelo git. Mas há pouco tempo dois PRs importantes foram merged, e agora ficou possível fazer overrides/includes por usuário como neste PR relacionado. Ainda não entrou em release, mas estou esperando que chegue em breve
Fico curioso para saber por que um tile WM novo seria melhor, já que uso xmonad há mais de 15 anos. Também não vejo muito qual seria a vantagem de um compositor Wayland além de "tiling + Wayland". Especialmente porque, sempre que usei Wayland no passado, havia algum bug crítico em relação ao X11, principalmente com Nvidia
Tentei voltar a usar Wayland no último ano em um ambiente Nvidia+Arch+Gnome3+Wayland, e agora quase tudo funciona sem problemas; o Firefox em particular está excepcionalmente suave e eficiente
O Wayland ainda tem problemas quando você faz coisas mais específicas, por exemplo não conseguir girar a orientação de uma mesa digitalizadora. Ainda assim, com Nvidia ele funciona bem a partir da versão 570 do driver
Importa muito qual distribuição Linux você usou. Eu uso Wayland há muito tempo no Fedora, e não tive grandes problemas nem em máquinas Intel nem Nvidia
Tive uma experiência parecida (no meio do caminho apaguei minha configuração por acidente com
rme tive que refazê-la), usei xmonad de 2009 até 2023 e depois migrei para o Niri. Os motivos detalhados estão aqui. Funciona sem problemas no PopOS, com 2x GTX 1080 e várias telas. Recomendo sem reservasTestei Wayland em um Asus Rog G14 + Nvidia 3060, e apesar de eu estar desconfiado, bastou configurar
drm.modesetpara tudo funcionar de cara. Dois monitores externos (1 HDMI, 1 DP via USB-C) também foram reconhecidos sem problema. Tirando conexão em daisy chain, fiquei satisfeito. É uma experiência recente, então ainda não passei por todos os casos, mas para mim funcionou melhor que o XTroquei i3 por Niri há algumas semanas e estou muito satisfeito. O jeito como ele usa janelas e workspaces combina mais naturalmente com meus hábitos. Eu trabalho por projeto em cada workspace, e mesmo se eu abrir temporariamente um terminal ou navegador à direita, isso não afeta nem reorganiza as outras janelas, então fica muito prático para referência rápida ou rodar comandos pontuais. O único problema é que agora eu realmente quero um monitor ultrawide
Um exemplo de aplicação do conceito do Niri ao Sway: scroll
Ontem reinstalei o PopOS e mudei para o Niri, e a adaptação foi imediatamente intuitiva. Diferente da época em que eu usava i3wm, não preciso me preocupar nem um pouco com redimensionamento de janelas, e no Niri quase nunca preciso reorganizar nada quando as janelas se expandem pelo workspace, então meu foco melhorou muito. Minha configuração é RTX 3090, Pop OS 24.04 beta, monitor 4K de 43 polegadas, e foi fácil instalar o Niri com
cargo build. Para rodar apps X11 como VS Code, Obsidian, Zoom e Blender, é indispensável instalarxwayland-satelliteDepois de me frustrar ao customizar o Hyprland, voltei para o GNOME por várias limitações (eu precisava de dezenas ou centenas de abas de navegador, extensão de tray etc.), mas como o GNOME quebra a compatibilidade das extensões a cada atualização, agora estou decidido a largá-lo de vez. Desta vez testei River, QTile e Niri, e acabei ficando no Niri, adicionando aos poucos por conta própria os recursos de que preciso. O agrupamento dinâmico de workspaces é intuitivo e conveniente, e os atalhos de teclado também podem ser configurados do jeito que eu gosto. Como DE, complemento com waybar e swaync. Também tenho me divertido escrevendo scripts com ferramentas de automação como Claude Code/Codex. Por exemplo, estou tentando várias coisas como
niri-workspacesno waybar para mostrar a atividade atual das janelas,niri-workspace-namescom integração ao fuzzel para renomear workspaces e um AltTab customizado. Recursos como miniaturas ao vivo aqui parecem um projeto grande. Graças aos novos agentes de código, ficou bem mais fácil ajustar o ambiente do jeito que eu quero mesmo sem documentação detalhada