2 pontos por GN⁺ 2025-03-13 | 1 comentários | Compartilhar no WhatsApp
  • Um usuário que usou Sway e i3 por muito tempo migrou do gerenciador de janelas em mosaico tradicional para o Niri por causa de um bug de clicar e arrastar no Sway
  • O Niri trata cada espaço de trabalho como uma faixa infinita que pode ser rolada para a esquerda e para a direita, então abrir uma nova janela não bagunça tanto a disposição das janelas existentes
  • Após a migração, em poucas horas ele montou uma configuração utilizável e, em uma semana, já estava em um estado que lhe servia melhor do que o Sway; ele destaca como vantagens o compartilhamento de tela por janela, a exclusão de janelas do compartilhamento de tela, screenshots integradas e cerca de 2 horas a mais de bateria
  • Gerenciadores de janelas em mosaico tradicionais criam carga cognitiva ao reorganizar janelas e gerenciar espaços de trabalho, e no Niri a quantidade de espaços de trabalho caiu de mais de 11 no Sway para 5 ou menos
  • Considerando diferentes tamanhos de tela e desempenho de processamento, o mosaico tradicional não precisa ser o fluxo de trabalho padrão para usuários avançados, e quem usa Sway ou mosaico baseado em Wayland deveria experimentar o Niri

O que motivou a mudança do Sway para o Niri

  • O autor usa gerenciadores de janelas em mosaico há cerca de 35% da própria vida, incluindo 5 anos de Sway e 2 anos de i3
  • Por ter adotado o Wayland relativamente cedo, ele se acostumou com um ambiente em que muitas coisas ainda estavam quebradas e também já estava bastante adaptado ao fluxo de trabalho do Sway
  • O gatilho direto foi um problema de clicar e arrastar no Sway: depois de selecionar texto e arrastar, a ação de seleção continuava mesmo após soltar o mouse
    • Como o problema não foi resolvido e alguns dias viraram semanas, até o simples ato de clicar para selecionar texto passou a causar insegurança
    • Em vez de procurar a biblioteca responsável ou rodar git bisect, ele abandonou anos de memória muscular e fluxo de trabalho para testar o Niri

Como o Niri funciona e a primeira impressão

  • O Niri é um gerenciador de janelas em mosaico rolável, em que cada espaço de trabalho funciona como uma faixa infinitamente larga que pode ser percorrida horizontalmente
  • Mesmo ao abrir novas janelas, ele não reorganiza as outras, então fica menos comum abrir um terminal e ver o Firefox ser empurrado para uma posição inesperada
  • Em poucas horas, ele conseguiu montar uma configuração boa o suficiente para uso real e, em uma semana, já se sentia melhor servido do que no Sway
  • Segundo o autor, isso trouxe de volta a sensação dos tempos em que trocava de distribuição ou de gerenciador de janelas de forma impulsiva para testar ferramentas novas e aparentemente arriscadas

Melhorias percebidas em relação ao Sway

  • O Niri oferece compartilhamento de tela por janela e também permite impedir que determinadas janelas apareçam nesse compartilhamento
    • Ao transmitir tarefas ou aulas, isso reduz a preocupação de notificações sensíveis, como alertas de e-mail bancário, aparecerem no canto da tela
  • A ferramenta de screenshot integrada agradou bastante e foi considerada melhor que a combinação grim+slurp recomendada no Sway
  • Em comparação com o Sway, a duração da bateria aumentou em cerca de 2 horas
  • Até no processo de adicionar recursos de IPC ao Niri, a experiência de desenvolvimento foi boa
    • Diferentemente de Sway/wlroots, o Niri/Smithay é escrito em Rust
    • O código pareceu mais acessível do que o autor esperava

Incômodos com gerenciadores de janelas em mosaico tradicionais

  • Gerenciadores de janelas em mosaico tradicionais empurram o usuário a otimizar ao máximo a disposição das janelas e, nesse processo, fazem a pessoa gastar carga cognitiva com um objetivo equivocado: minimizar a reorganização de janelas
  • Se você não alterna o tempo todo entre tela cheia e modo não maximizado, ou não vive ficando sem espaços de trabalho, então provavelmente não está com tantas janelas abertas assim
  • Layouts com abas, pilhas e contêineres aninhados são avaliados como remendos menos ergonômicos para disfarçar a falta de espaço
  • No Sway, ele frequentemente chegava a 11 espaços de trabalho e, ainda assim, precisou adicionar atalhos para os espaços de trabalho 11 a 20
    • Às vezes ele fechava janelas para economizar espaço de trabalho e acabava perdendo o fluxo do projeto
    • No Niri, mesmo com 3 projetos grandes, vários apps de chat, um vídeo no YouTube e material de 3 aulas abertos, ele não passa de 5 espaços de trabalho
    • A mesma configuração, no Sway, avançava até o espaço de trabalho 15, exigindo navegar por vários espaços até encontrar o material desejado

Tamanho de tela, DPI e contexto em ultrawide

  • Levando em conta a variedade de tamanhos de tela e o aumento no desempenho de processamento, o autor entende que gerenciadores de janelas em mosaico tradicionais não precisam ser a escolha padrão no fluxo de trabalho de usuários avançados
  • Na avaliação dele, o mosaico tradicional restringe artificialmente o espaço, força a reorganização do conteúdo e também não combina bem com layouts de monitor fora do padrão
  • Um dos principais motivos para migrar para Wayland foi o DPI misto
    • Ao usar lado a lado um monitor 4K e outro FHD com o mesmo tamanho físico, a densidade de pixels do 4K é cerca de quatro vezes maior
    • Uma janela com largura fixa em pixels pode parecer pequena no 4K e grande no FHD
    • Para que as janelas pareçam ter tamanho físico semelhante, é necessário aplicar escala
    • A implementação no X11 não funcionava bem para isso na época, enquanto o Wayland trata isso como recurso essencial
    • O X11 também tem dificuldade com escala fracionária não inteira, como 1.6, e o Wayland se sai melhor nesse aspecto
  • O autor considera que um gerenciador de janelas em mosaico rolável combina muito bem com monitores ultrawide
    • No Sway, uma nova janela tende a ocupar todo o ultrawide, enquanto o modelo do Niri faz o mosaico de forma mais natural e aproveita melhor o espaço
  • Para quem usa um gerenciador de janelas em mosaico tradicional baseado em Wayland, como o Sway, a recomendação é testar o Niri imediatamente

1 comentários

 
GN⁺ 2025-03-13
Comentários do Hacker News
  • Uso Gnome e abro quase todas as janelas em tela cheia. Às vezes também faço uma janela de meia largura com win+left/right; isso me torna um homem das cavernas?

    • Olhando para a “street cred” do autor, também é preciso levar em conta que ele ainda tem 20 anos. Acho que muita gente sente que, aos 20, a paciência para suportar todo tipo de ajuste e sofrimento inútil em software era praticamente infinita, em comparação com depois de alguns anos de trabalho ou de formar uma família.
      Nos últimos 20 anos, vi pelo menos uma dúzia de gerenciadores de janelas em mosaico chamados de “o futuro” aparecerem e desaparecerem. Na prática, os recursos que aumentam bastante a produtividade já foram incorporados há muito tempo aos principais gerenciadores de janelas, e gerenciadores puramente em mosaico provavelmente continuarão sendo produtos de nicho.
      No fim, para usar direito é preciso investir bastante tempo e esforço, enquanto o ganho de produtividade obtido é, realisticamente, incremental; em troca, você também precisa aceitar as arestas típicas desse tipo de produto de nicho.
    • Eu também era parecido, mas descobri que meu fluxo de trabalho combina bem com um gerenciador de janelas em mosaico. Uso divisões para apps temporários, por exemplo entrando no terminal por uns 30 segundos; fora isso, dou a cada app um workspace ou uma tela inteira.
      É só um pouco melhor que o Gnome, mas as janelas têm mais chance de já aparecer no lugar certo desde o início e, sinceramente, com que frequência alguém realmente precisa empilhar janelas sobrepostas no eixo z?
      No começo, eu achava que um canvas 2D infinito, com posições e níveis de zoom vinculáveis a teclas, como a câmera de um jogo de estratégia em tempo real, seria um gerenciador de janelas melhor. Mas, depois de usar o Niri, fiquei convencido de que minha ideia era complicada demais, e que o Niri acerta exatamente o ponto certo entre funcionalidade e usabilidade.
      Parece uma tecnologia presenteada por alienígenas do futuro.
    • Acho que a maioria das pessoas trabalha assim. Vi um colega desenvolvendo em React num MacBook, e as janelas estavam simplesmente no tamanho e na posição em que foram abertas, nem em tela cheia; para a minha cabeça, acostumada a usar 3 monitores, foi incompreensível.
      Eu uso o notebook, um monitor central horizontal de 24 polegadas e outro vertical de 24 polegadas; deixo Spotify/Teams/shell/Outlook divididos em metades no monitor vertical, documentos na tela do notebook e a IDE em tela cheia na tela principal. Também separo desktops virtuais para design/pesquisa, desenvolvimento e uso pessoal.
      Manter tamanhos padrão de monitor, em vez de 4K ou ultrawide, também simplifica muito o compartilhamento de tela.
      Uma pequena reclamação é que o design de UI hoje coloca padding de 10px em todo lugar, então a maioria dos apps e páginas precisa estar em tela cheia para fazer qualquer coisa.
    • Exatamente igual a mim. O que eu realmente quero é um Gnome um pouco mais capaz de fazer mosaico, que às vezes faça divisões em 3 ou 4 partes quando necessário.
      Mas a maior parte da minha demanda por mosaico está dentro do terminal, e o tmux faz o papel de herói.
    • Acho que há quem vá gostar desta extensão:
      https://extensions.gnome.org/extension/4548/tactile/
      Eu vim do i3, mas, se você não quer uma extensão de mosaico completa e só quer um pouco da conveniência do tiling, o Tactile me parece uma solução muito simples e útil.
  • Se alguém está vindo de um gerenciador de janelas em mosaico tradicional, queria saber como fica o fluxo de trabalho por atalhos.
    Para mim, o mais importante são atalhos fixos para uma janela específica, um workspace, na prática um programa específico, como Super+[0-9]. Se isso for possível e ainda resolver o problema de “gerenciamento de workspaces” mencionado no texto, acho que eu migraria imediatamente.
    Faz sentido usar “workspaces” assim no Niri também? Por exemplo, ter um workspace para o navegador, outro para o editor e outro para várias janelas de terminal, e querer alternar instantaneamente de “navegador” para “terminais”. Eu preferiria que não houvesse efeitos de animação.

    • É possível. O Niri ainda oferece suporte a workspaces numerados, como gerenciadores de janelas do tipo Sway. Só que agora também dá para rolar horizontalmente.
    • Você acaba usando o Niri de forma parecida com outros gerenciadores de janelas em mosaico, mas é bom poder agrupar apps auxiliares com o app principal, em vez de ter um workspace por app.
      Por exemplo, o gerenciador de senhas fica no mesmo workspace que o navegador, normalmente fora da tela. Quando preciso criar uma senha, ele está logo ao lado. Faço o mesmo com terminais auxiliares necessários ao lado do editor de texto.
    • No Sway, dá para experimentar um tiling parecido com o do Niri, mais precisamente com o PaperWM, usando o papersway; no Hyprland, usando o hyprscroller. Eu uso este último, e ele é basicamente quase igual ao tiling comum, além de permitir workspaces nomeados.
      Mas percebo que ainda ficou bastante memória muscular de quando eu trabalhava dentro das limitações do tiling tradicional. Por exemplo, no meu monitor, se eu abrir mais de 3 terminais, tenho que ir para um novo workspace.
      Então acabo indo com frequência para um novo workspace mesmo quando na verdade não preciso, e fico um pouco confuso sobre o que está onde. Às vezes penso que talvez fosse mais fácil romper de forma mais clara com o jeito antigo de trabalhar.
      Ainda assim, gosto muito do tiling no estilo do Niri. Na minha opinião, ele elimina quase todas as desvantagens dos gerenciadores de janelas em mosaico.
    • Tenho usado i3 no último ano e sinto todos os incômodos mencionados neste texto.
      No geral, prefiro muito mais o i3 ao Gnome, mas a dor de “tudo ser redimensionado” é muito real. Isso fica especialmente pior quando há muitas chamadas no Zoom, porque as “notificações” do Zoom parecem contornar as notificações nativas do sistema e tratar cada uma como uma janela separada, o que amplifica o problema.
      Acho que vou experimentar o Niri.
    • No Mac, para um uso tipo Super+X, também recomendo fortemente o rcmd.
  • Para mim, não funcionou bem. Há uma faixa de janelas que continua além das bordas da tela, e ver às vezes só metade de uma janela me causava uma ansiedade estranha e ficava puxando meu olhar.
    Usei por uns dois meses e voltei para o Hyprland, um compositor de tiling mais tradicional, em que as janelas não se sobrepõem às bordas da tela.
    Ainda assim, tecnicamente o Niri é muito bonito. Tem uma codebase moderna em Rust, a estrutura do código é boa e é fácil entendê-lo e começar a mexer nele.

    • Eu configuro a largura das colunas de modo que quase nunca apareçam janelas parciais nas bordas.
      No notebook, uso largura total ou 1/2 largura, dependendo da tarefa; no ultrawide, uso 1/3 de largura, ou largura total para um editor com divisões internas de colunas.
    • Em widescreen, isso fica melhor ou pior? Eu gosto de trabalhar em UWQHD
  • Eu gosto da ideia dos gerenciadores de janelas em mosaico e usei i3 e Hyprland por bastante tempo, mas, por algum motivo, nunca consegui me fixar de vez e acabava voltando para o Xfce. Hábitos antigos não morrem fácil
    O momento em que o experimento costuma acabar é quando as janelas passam de uma certa quantidade. Se você não configurou workspaces, layouts etc. com profundidade suficiente, a partir daí fica mais difícil gerenciar
    Acabei de abrir o Niri e, em 10 minutos, ele já pareceu muito mais confortável do que outros gerenciadores de janelas em mosaico. É imediatamente intuitivo, e a integração com o mouse também é excelente
    Ainda é cedo para declarar vitória, mas parece exatamente aquilo que eu queria e precisava há anos. Vou julgar o quão bom ele é pelo tempo que levar até eu sentir vontade de voltar para o Xfce

    • Para mim, tiling também nunca encaixou muito bem. Talvez seja porque uso Linux principalmente no notebook; a tela é pequena, então é difícil fazer muito tiling além de dividir a tela ao meio, e mesmo isso não combina muito com coisas como IDEs
      Uma configuração comum, sem graça e fora de moda de gerenciador de janelas/ambiente de desktop flutuante, com um tiling opcional leve, foi o melhor para mim
  • Leitura divertida. Todo mundo tem seu limite
    Gostei da parte: “Naturalmente, em vez de descobrir qual biblioteca fez uma mudança incompatível e rodar git bisect por 4 horas, decidi jogar pela janela quase 10 anos de memória muscular e melhorias no fluxo de trabalho”

  • Também sou usuário antigo de i3/Sway, e o Niri é bem confortável. Consegui trazer quase toda a memória muscular do Sway, como mudança de foco e movimentação de janelas. A estabilidade também é muito boa e funciona de cara com xwayland-satellite
    O maior problema é que fico “perdendo” janelas. Deixo uma janela aberta dentro de uma pilha profundamente aninhada, vou fazer outra coisa e esqueço que já a deixei aberta
    Isso também acontece até certo ponto no Sway, mas é muito mais fácil passar por todos os workspaces
    Seria bom ter algo como um “mapa de janelas” atrelado ao Alt-Tab

    • Você quer dizer algo como a issue que eu linkei antes? https://news.ycombinator.com/item?id=43347909
      Para constar, estou imitando a função run-or-raise com uma combinação esquisita feita de niri IPC / bash / jq, e provavelmente funciona melhor que o RoR original. Ela alterna entre janelas que correspondem a um appId específico e, se não houver nenhuma, inicia uma nova
      Ao juntar isso com um rofi (Wayland) que permite ir para qualquer janela aberta via busca fuzzy, a sensação melhorou bastante
    • Será que alttab atende ao que você precisa? Uso junto com xmonad e funciona bem. https://github.com/sagb/alttab
    • O Hyprscroller, um plugin do Hyprland que faz algo parecido com o Niri, tem um recurso do tipo “expose”. Mas eu frequentemente esqueço que ele existe
  • Sou da turma mais jovem que usa Hyprland, mas também testei o Niri por um tempo e ele funcionou bem. Para quem vem de um fluxo de trabalho médio no Windows com um único monitor, ele se encaixa muito bem, especialmente para a maior parte do trabalho de escritório
    Ainda assim, acho que configurações de tiling mais complexas têm um teto de produtividade mais alto. Se alguém mantém mais de 10 workspaces abertos, como o autor do texto, acho que deve escolher o Niri
    Fico curioso se o aumento na duração da bateria se mantém também para quem deixa poucas janelas abertas. Ganhar 2 horas só trocando o gerenciador de janelas é uma diferença enorme

    • Ainda fico alternando entre Wayland e X11, e mesmo no meu antigo T14s de 2ª geração a combinação X11+xmonad+sem compositor dura em média 1,5 hora a mais
      Esse é um dos principais motivos pelos quais tenho dificuldade em migrar de vez. Não uso ambiente de desktop, nem recursos em que um compositor realmente seria útil, então, do meu ponto de vista, quase não vejo vantagens
      Algo que às vezes aparece é uma borda preta causada por menus suspensos com sombra de programas gtk4 que não seguem o tema do sistema que configurei
  • Ainda não experimentei o Niri, mas tenho interesse
    Recentemente, tive uma experiência bem boa com um gerenciador de janelas rolável no GNOME usando a extensão PaperWM: https://github.com/paperwm/PaperWM

    • O Niri foi inspirado no PaperWM e é muito mais suave. Se você gostou do PaperWM, vale a pena dar uma olhada no niri
      Mas ele perde um pouco por não ter sido feito dentro do ambiente Gnome. Algumas coisas que o Gnome fornece “de graça” faltam no Niri, e você precisa procurar por conta própria ferramentas substitutas até para recursos bem básicos
      Coisas que parecem faltar incluem notificações de desktop, lançador de apps, dock ou lista de apps em execução e Xwayland para rodar aplicativos X11 de forma transparente. Todos esses recursos precisam ser fornecidos por ferramentas separadas, que não vêm incluídas no Niri
      Minha maior reclamação é a falta de sincronização da área de transferência entre X11 e Wayland. O Gnome parece cuidar disso automaticamente, mas no Niri não; é muito irritante não conseguir copiar/colar entre apps Wayland e apps X11
      Há gambiarras, mas nenhuma das que tentei até agora foi confortável e estável o suficiente
  • Gerenciadores de janelas roláveis são realmente excelentes. Você obtém cerca de 80% da produtividade de um gerenciador de janelas em mosaico com 20% do esforço
    É curioso que tenhamos levado 30 a 40 anos para descobrir isso

    • Vi o vídeo no site e, para alguém que usa bastante arrastar e soltar entre programas, parece um inferno completo
      Também sou do tipo que deixa as abas abertas do navegador crescerem infinitamente até acabar favoritando centenas delas e fechando tudo, então todo esse paradigma realmente parece não combinar comigo
    • Quando usava i3, eu tinha algo muito parecido
      Era um código Python feito meio de qualquer jeito que permitia dar yank em janelas para dentro e para fora de uma pilha pelo nome, e deixava de lado a janela mais antiga da pilha. Na prática, era um cache LRU para janelas
      “Funcionava”, mas se o PaperWM existisse quando eu estava na faculdade, acho que eu teria curtido muito
      Há coisas que só gerenciadores de janelas flutuantes fazem bem. Eu gosto do meu mau hábito de fixar alguns documentos flutuantes em várias partes da tela e fazer referências cruzadas sem movê-los muito
  • Se você quiser aprender mais sobre o que acontece no desktop Linux, recomendo que qualquer pessoa experimente pelo menos um gerenciador de janelas não padrão
    Aprendi mais sobre Linux mexendo com gerenciadores de janelas em mosaico do que com qualquer outro tipo de software
    Não sei se minha produtividade realmente aumentou, mas é uma ótima experiência de aprendizado, a ergonomia é boa, e a satisfação de construir seu próprio ambiente de desktop do zero é enorme

    • Quais vocês acham que são os gerenciadores de janelas mais interessantes?