13 pontos por GN⁺ 2025-10-14 | 1 comentários | Compartilhar no WhatsApp
  • Um gerenciador de janelas em mosaico de código aberto para macOS, em desenvolvimento com foco em desempenho e usabilidade
  • Funciona sem desativar a Proteção de Integridade do Sistema (SIP) e é um dos poucos gerenciadores de janelas compatíveis com a opção do macOS "Displays have separate Spaces"
  • Suporta vários estilos de layout semelhantes a i3/sway e bspwm
  • Oferece integração natural com o ambiente nativo do macOS, como navegação entre espaços no estilo Mission Control e gestos do trackpad
  • Tem foco em desempenho de animações e experiência do usuário, com destaque para hot reload de configuração e integração com programas externos
  • Herda parcialmente as vantagens do gerenciador de janelas em mosaico existente para macOS, Aerospace (como desempenho e flexibilidade), ao mesmo tempo em que busca recursos adicionais como suporte a animações e a possibilidade de usar apenas um monitor em tela cheia em configurações com múltiplos monitores

Principais recursos

  • Vários estilos de layout: suporta tanto a organização de janelas em grade, como no i3 ou sway, quanto a divisão binária de espaço no estilo bspwm
  • Ícone na barra de menu: exibe visualmente todos os espaços de trabalho e o status do layout em cada um deles
  • Navegação no estilo Mission Control do macOS: permite gerenciar visualmente e com facilidade a alternância entre espaços de trabalho
  • Oferece troca automática de foco do mouse e auto-raise
  • Permite trocar a posição das janelas ao arrastá-las, com animações suaves
  • Ao usar gestos do trackpad, permite alternar entre espaços de trabalho como no macOS nativo
  • Suporta alterações de configuração em tempo de execução (hot reload), facilitando bastante a configuração em tempo real
  • Suporta interface com programas de terceiros, como Sketchybar, além de integração via CLI ou mach port
  • Pode enviar sinais (Signals) para fora quando há mudança de espaço de trabalho ou alterações nas janelas, e esses sinais podem ser emitidos por CLI ou por conexão mach
  • Desenvolvido 100% em Rust

1 comentários

 
GN⁺ 2025-10-14
Comentários do Hacker News
  • Antigamente eu usava muito o i3. O i3 é extremamente flexível e dá muita liberdade de configuração, então dá para fazer bem mais do que só mover janelas. Mas depois que migrei para Mac, não consegui encontrar um gerenciador de janelas em mosaico que fosse ao mesmo tempo cheio de recursos e estável. Testei várias opções e agora acabei ficando só com o Rectangle. O Rectangle não é exatamente um gerenciador de janelas de verdade; ele só oferece atalhos para mover facilmente as janelas para a esquerda/direita/cima/baixo ou em divisões de 3/4/6. Isso cobre uns 80% do meu padrão de uso, não exige configuração personalizada e não tem comportamentos inesperados, então tenho usado satisfeito. Também fiquei mais velho e já não tenho tanta energia para gastar tempo com um monte de personalização. Site oficial do Rectangle

    • Um recurso do Rectangle de que eu realmente gosto é o modo todo. Eu não uso para gerenciamento de tarefas de fato, mas é muito prático poder fixar uma janela para ficar sempre visível, enquanto os atalhos de janela inteira se ajustam automaticamente a isso
    • Sou muito grato por o Rectangle oferecer suporte aos atalhos do Spectacle. Talvez um dia eu aprenda os atalhos padrão, mas por enquanto já estão gravados na minha memória muscular, então continuo assim
    • A combinação de Rectangle com Apptivate finalmente resolveu, depois de anos, minha busca por um substituto do i3. Rectangle para mover janelas, Apptivate para alternar janelas com super+número — reproduz exatamente a forma como eu me movia no i3
    • Experiência parecida aqui, mas eu uso o Divvy em vez do Rectangle. Site oficial do Divvy
    • Recomendo o Rectangle. Tornou a adaptação muito mais fácil quando fui do Linux para o Mac
  • Em monitores 5k/6k, o mosaico tradicional tem limitações — as janelas acabam ficando grandes demais. Por isso acho apps como o Moom bem melhores. No Windows não existe algo como o Moom, então uso um gerenciador em mosaico como o komorebi. Como alguém que alterna entre vários sistemas operacionais e dispositivos, acho uma pena o Rift não suportar atalhos universais como alt+hjkl. Em telas ultrarresolução ou ultrawide, esse tipo de organização de janelas é essencial na minha opinião (o komorebi suporta)

    • Se o diagrama ASCII que você colou não estiver aparecendo direito, no HN o bloco vira código se você recuar com quatro espaços
    • Disseram que o komorebi também vai chegar ao macOS em breve vídeo de apresentação do komorebi no macOS
  • Pode ser insuficiente para muita gente, mas para quem é como eu e no Mac normalmente usa só uma janela, ou duas telas apenas quando conecta um monitor externo, esse recurso nativo já basta guia oficial de divisão de janelas do macOS (não sou usuário pesado de mosaico)

    • Fiquei me perguntando se isso era algo disponível só no Tahoe para Mac. Eu não fazia ideia até agora
    • Eu não sabia mesmo que esse recurso existia — valeu pela informação
  • No macOS, tela cheia e gestos de trackpad parecem tão atraentes porque, na maioria dos casos, você trabalha em apenas uma janela. Mas quando precisa manter terminal, editor, DevTools do navegador, logs e documentos abertos ao mesmo tempo, a previsibilidade do layout se torna muito importante. Ferramentas de mosaico não servem só para deixar duas janelas lado a lado, mas também para

    • reduzir bastante o custo de troca de contexto (trocar/reorganizar janelas só pelo teclado)
    • replicar layouts de trabalho frequentes por projeto
    • aproveitar divisões precisas em telas de altíssima resolução
      No Mac, eu resolvo uns 80% com Rectangle ou Moom, e para o resto uso Aerospace ou Rift. Quando o número de janelas ou a frequência de troca aumenta, a utilidade de um gerenciador de janelas em mosaico fica bem clara
  • Houve uma época em que tentei criar meu próprio gerenciador de janelas, mas desisti rápido porque o macOS não tem uma API decente para isso. Na prática, você acaba tendo que dar um jeito com a API de acessibilidade. Este projeto também usa bindings de Objective-C e a API de acessibilidade, então fiquei curioso sobre como foram o debug e a implementação das funcionalidades, e quais ferramentas você usou principalmente

    • Acho que chamar o framework de acessibilidade simplesmente de “hack” não faz justiça; ele é uma ferramenta muito bem projetada. No último mês fiz um projeto parecido em Rust e lidei com vários bindings de frameworks do macOS, e não foi nada tão assustador. O ambiente de desenvolvimento pode ser só Rust com rust-analyzer, além da documentação da Apple e do objc2, sem precisar de uma configuração complexa com XCode
  • Eu também passei recentemente por uma bela sessão de yak shaving para ajustar o Aerospace do jeito que funciona para mim. Fico curioso sobre como as pessoas resolvem quando muitos atalhos entram em conflito. Como já estou acostumado com combinações hjkl, sempre quero mapear quase tudo nelas, e o recurso modal do Aerospace ajuda um pouco a resolver esses conflitos. No fim das contas, como vocês configuram isso?

    • Pelo jeito, a maioria só vive com isso mesmo. No meu caso, os conflitos de atalho aparecem rapidinho no uso do dia a dia. Depois de cerca de um ano usando Aerospace, deixei alt+space como tecla líder para esconder tudo lá. No modo normal do Aerospace mantenho alguns alt-shortcuts e uso {hjkl} para mover janelas; o restante vai para modos separados (por exemplo, modos “go-to” e “move-to” para pular rapidamente entre janelas usando letras/números). Me lembra uma versão expandida da usabilidade baseada em leader key do zellij/tmux no terminal, então estou satisfeito. Uma dificuldade é que o Aerospace esconde janelas depois de trocar de tela, então às vezes fico catando elas pelos cantos inferiores
    • Já usei o Aerospace, mas a configuração padrão dele atribui todas as combinações alt+letra (26 no total) a workspaces diferentes, o que destrói todos os atalhos estilo emacs que poderiam ser usados dentro dos apps. Nem sequer existe um tutorial decente sobre o mapeamento padrão ou o modo de uso, só uma longa lista de comandos. Recentemente já apanhei bastante também em ambientes Linux como sway e hyprland (inclusive mexendo com bootloader e criptografia de disco), mas ainda assim é raro ver um software tão pouco amigável. Então removi o Aerospace e estou considerando o Rift como próximo candidato; ou talvez implemente eu mesmo um gerenciador de janelas — esse universo de mosaico já tem muito dessa cultura de “vou fazer eu mesmo exatamente o que preciso”
    • Eu faço algo parecido com o Karabiner: remapeei o Option direito do teclado externo para Option+Shift (A1) e o Control direito para Control+Option+Shift (A2). Na configuração do Aerospace, mover o foco é A1+hjkl e mover a janela é A2+hjkl. Trocar de workspace fica em A1+ui, mover a janela de workspace em A2+ui. Trocar de tela (monitor) é A1+m e mover a janela de tela é A2+m. São de fato as combinações que eu mais uso, e se houver conflito com atalhos de apps, eu altero o atalho do app para evitar o choque. Daria para expandir mais, mas do jeito que está já funciona muito bem
    • Eu uso os atalhos meh (control+alt+shift) e hyper (control+alt+shift+command). Mapeei segurar o caps lock para meh e tocar rápido para esc. Isso fez caber um monte de atalhos numa mão só. Por exemplo, meh+número para trocar de space, janela quente do terminal em meh+space, e foco de janela também em meh+hjkl
  • Com Hammerspoon, dá para criar seu próprio gerenciador de janelas. Eu gosto da abordagem modal do Divvy (trocar layout com uma única tecla de comando), mas infelizmente ele não recebe mais manutenção. Então acabei criando meu próprio gerenciador modal de janelas com o OpenAI Codex código-fonte do gerenciador de janelas para Hammerspoon. Acho que seria legal compartilhar esse tipo de abordagem!

    • Também venho usando o Divvy há bastante tempo e não fazia ideia de que ele tinha deixado de ser mantido… mesmo assim, ele já tem tudo de que preciso, então não senti falta. Se houver algum recurso que você gostaria que fosse adicionado, fiquei curioso
    • Eu resolvi tudo o que precisava com o MiroWindowsManager (plugin do Hammerspoon). Com três formas de divisão por chord, dá para posicionar qualquer janela instantaneamente na divisão desejada só com hotkeys. Dá mesmo para organizar as janelas exatamente como eu quero em segundos
  • Para quem usa trackpad no MacBook, nada supera o Swish; é dominante em relação a qualquer outro app Site oficial do Swish

    • Realmente faz jus ao nome “highly opinionated” ;). Mas continuo preferindo o Divvy porque meus atalhos de teclado personalizados funcionam sempre do mesmo jeito, seja no trackpad ou no teclado externo. Site oficial do Divvy
  • Alguém já configurou isso com nix flake? Estou testando vários gerenciadores de janelas desde o yabai, e no Aerospace às vezes dá umas travadas, talvez por problema no tratamento de eventos quando uso o sketchybar só para mostrar workspaces bonitinhos. Acho que vou experimentar este aqui (Rift) na sequência

  • Não entendo por que alguém precisaria de um gerenciador de janelas em mosaico no macOS. Com que frequência realmente é necessário colocar janelas lado a lado? Não basta abrir a maioria dos apps em tela cheia e trocar entre eles com swipe de quatro dedos? Alguém me convença

    • Eu uso isso o tempo todo. Deixo o Slack no quarto direito da tela e o resto varia entre navegador/terminal/IDE etc., dependendo da combinação. Frequentemente também faço navegador + tail de logs, e dentro dos próprios apps costumo dividir em múltiplas views/terminal. No navegador também é comum deixar páginas lado a lado
    • Eu não diria que um gerenciador de janelas em mosaico seja algo “necessário”. Mas talvez esse esquema de “só colocar em tela cheia e passar quatro dedos” funcione bem só para você mesmo. Eu desliguei quase todos os gestos, animações e múltiplos desktops (spaces). A velocidade de transição entre apps em tela cheia é lenta demais, e para chegar ao app que eu preciso tenho que empilhar vários swipes. Não gosto de ficar calculando mentalmente quantos espaços preciso atravessar segundo a ordem dos apps. Quero abrir imediatamente o app que quero, na hora
    • Não é macOS, mas imagino que seja parecido com os motivos para usar mosaico no Linux. Quando uso só a tela do notebook, tela cheia faz mais sentido; mas quanto maior o monitor, mais surgem motivos para usar janelas lado a lado. Documento/e-mail, editor/terminal/VCS, código/documentação, template/web, contabilidade/banco, gerenciador de arquivos etc. — em muitos casos o trabalho fica muito mais produtivo vendo apps diferentes ao mesmo tempo
    • Com certeza há momentos em que é ótimo ter várias janelas abertas lado a lado. Por exemplo, quando você faz várias tarefas como navegador/documentação/IDE, ou quando um único app não precisa ocupar a tela inteira. Na prática, a maioria dos apps não precisa de tela cheia, e muitas vezes um tile de 1/4 é até mais confortável. No meu caso, normalmente uso tela cheia + desktops virtuais, mas depende do trabalho
    • Antigamente eu usava bastante spaces (troca de desktop), mas em monitores grandes é muito mais confortável deixar tudo visível na mesma tela. Uso três monitores de 32 polegadas (os laterais na vertical) e, tirando a IDE, quase nunca uso tela cheia. Dividir a tela significa ter sempre várias “telas menores” ao mesmo tempo, então fica mais simples e eficiente porque não preciso ficar procurando em qual desktop está cada janela. Com o Chrome aberto em vários spaces, o cmd-tab muitas vezes nem seleciona a janela que eu quero, e aí preciso ir caçar manualmente, o que é irritante. Já quando estou só no laptop, a tela é pequena, então gerencio mais pelas spaces virtuais. Slack, várias janelas do Chrome, terminal, IDE, Postman, DataGrip — consigo alternar tudo com um único atalho, sem trocar a tela inteira. É como ter sempre 8 telas reais abertas, então a produtividade vai lá em cima. Com r-cmd eu consigo focar em cada app muito rápido, e como não preciso ficar navegando por desktops virtuais, também fica muito mais fácil encontrar tudo