O macOS precisa recuperar a grade
(blog.hopefullyuseful.com)- O Spaces do macOS, na era do Leopard, permitia tratar desktops virtuais como se fossem telas reais com uma grade 3x3 personalizada, deixando o usuário alternar entre navegador, editor, Xcode e simulador com memória espacial
- O Mission Control passou a limitar os desktops virtuais a uma única linha horizontal no macOS Lion, quebrando essa memória espacial ao exigir deslizar pelo teclado até uma tela específica ou decorar números de atalhos
- O Total Spaces causava lentidão e depois passou a depender de modificações no Dock do sistema e de contornar o SIP, enquanto gerenciadores de janelas como Yabai e Aerospace não combinavam com apps em tela cheia nem com a preferência por espaços dedicados por tarefa
- O GridLion surgiu como solução depois que o InstantSpaceSwitcher mostrou a troca de spaces sem animação, e em vez de usar a API travada do Mission Control, modela os spaces nativos de linha única para exibi-los como uma grade
- LLMs ajudaram a criar um protótipo funcional em um dia, mas a sensação da interface ainda exigiu um ciclo de feedback humano, e por causa das limitações restantes de API no GridLion, Spaces em grade deveriam voltar a ser um recurso do sistema operacional
A memória espacial criada pelo Leopard Spaces
- O Spaces do macOS 10.5 Leopard levou os desktops virtuais ao macOS e permitia que o usuário organizasse os espaços em qualquer grade desejada
- A grade 3x3 funcionava como 9 telas, permitindo fixar apps e tarefas, como navegador no centro, editor web acima, Xcode no canto superior esquerdo e o simulador iOS logo abaixo
- Ir para uma posição específica com um único atalho de teclado criava memória muscular e espacial, como olhar para monitores físicos separados
- A grade de 16 telas de sequenciamento do EasyBeats Drum Machine também foi diretamente influenciada pela organização do Spaces da Apple
A grade que desapareceu depois do Lion
- O macOS Lion introduziu o Mission Control e passou a limitar os desktops virtuais a uma única linha horizontal
- Nessa linha horizontal, para chegar a uma tela específica pelo teclado era preciso continuar se movendo lateralmente e, mesmo usando atalhos diretos, ainda era necessário lembrar se o navegador estava na tela 7 ou 8
- Essa mudança tornou muito mais difícil manter a lógica de lembrar desktops pela sua posição espacial
- Houve alternativas como o Total Spaces, mas elas traziam lentidão, dependiam de modificar o Dock do sistema e depois passaram a exigir contornar o SIP
Espaços por tarefa em vez de gerenciadores de janelas
- Gerenciadores de janelas como Yabai e Aerospace não foram uma solução universal para todos os usuários
- Organizar janelas sobre um desktop se parecia mais com mover papéis sobre uma mesa, enquanto o necessário era algo mais próximo de bancadas de trabalho separadas, onde tudo permanecesse no lugar
- Apps em tela cheia e o modo dividido do macOS, por darem uma área dedicada a cada tarefa, combinavam melhor com navegação por spaces em grade
Como o GridLion foi implementado
- O InstantSpaceSwitcher removeu a animação de troca de spaces do macOS sem modificar o sistema, e ver essa troca sem animação mostrou que era possível resolver o problema da navegação em grade
- O macOS mantém a maior parte da API do Mission Control bloqueada, então não é possível adicionar ou reorganizar desktops com APIs documentadas
- O GridLion adotou uma abordagem com um wrapper leve sobre os spaces nativos, modelando internamente os spaces de linha única do macOS como se fossem uma grade
- Com ajuda de LLMs, um protótipo grosseiro, mas funcional, foi criado em um dia e, após alguns dias de uso, ficou claro que era preciso uma ferramenta mais refinada
- Cerca de um mês depois, o resultado chegou a um nível satisfatório, e o nome do app virou GridLion, combinando o problema surgido no macOS Lion com a ideia de grade
Barreiras de permissões e distribuição
- Para capturar atalhos globais de teclado e navegar entre spaces, é necessária a permissão
Accessibilitydo macOS - O fluxo de permissões do macOS não termina imediatamente após a aprovação como no iOS; é preciso abrir os ajustes, encontrar o toggle específico e ativá-lo, além de aprovar prompts extras de segurança
- Para criar pequenas prévias dos spaces, também é necessária a permissão
Screen and System Audio Recording, e surgem diálogos de aviso mais severos por causa de janelas invisíveis e snapshots de prévia da tela - O GridLion funciona sem essa permissão, mas o recurso de prévia depende dela
- Para gerar confiança, o app precisava evitar qualquer uso de rede além da verificação de atualizações solicitada pelo usuário e da validação de chaves de licença
- Como o GridLion chama APIs privadas para obter informações de spaces, ele não pode ser publicado na App Store
- Para vender fora da App Store, era necessário um Merchant of Record para processar compras, impostos e reembolsos, e as opções consideradas foram Paddle, GumRoad e Lemon Squeezy
- O Lemon Squeezy oferece a License code API, que entrega chaves de licença aos compradores e fornece métodos de ativação, desativação e validação
- A aprovação no Lemon Squeezy exigia demonstrar que o produto tinha valor e uso reais, com necessidade de screencast e comprovação de contas de redes sociais
- Mesmo antes da aprovação, era possível usar contas de teste, o que facilitou configurar e testar a integração com o app
LLMs e as limitações que ainda restam
- LLMs funcionam bem em tarefas com objetivo claro, como resultados específicos de API ou consultas a grandes conjuntos de dados, porque é fácil iterar vendo o resultado
- Interfaces de usuário dependem muito de sensação, então recursos voltados ao usuário ainda precisam de humanos dentro do ciclo de feedback
- Para alguém que não trabalhava com desenvolvimento nativo para Mac/iOS havia quase 10 anos, LLMs foram úteis, mas ficou a dúvida se seria possível fazer o mesmo app em tempo parecido do jeito antigo e aprender mais no processo
- O GridLion foi projetado com objetivos como navegação e reorganização de spaces em grade, operação rápida e estável e configuração de tamanho de grade e atalhos por monitor
- Não há APIs confiáveis para mover um space de um monitor para outro ou mover uma janela de um space para outro
- O GridLion funciona em conjunto com o Mission Control, então essas tarefas podem ser feitas por ele
- Fazer com que um app específico sempre apareça em uma posição fixa da grade quando for aberto era algo que o Spaces original do macOS já oferecia, mas ainda é uma pendência no GridLion
- O mais desejável é que Spaces em grade volte como recurso nativo do sistema em uma próxima versão do macOS
1 comentários
Comentários do Hacker News
A abordagem atual da Apple parece ser: para evitar o problema de “iniciantes vão clicar em permitir de qualquer jeito”, ela joga o usuário toda vez em uma miniaventura de administrador de sistemas de 4 ou 5 etapas
Você precisa achar um pequeno botão nas configurações, ativá-lo e depois passar de novo pelo prompt de segurança; o fato de não existir uma forma de desativar isso nem para usuários experientes parece uma falta de respeito com o usuário
O problema de uma avó ou de uma criança de 10 anos clicar em “permitir acesso total ao sistema de arquivos e keylogging” num executável suspeito é algo que a Apple precisa resolver, mas para usuários que sabem o que estão fazendo, deveria haver uma forma de desligar essa proteção
Não é perfeito, mas a abordagem da Apple é bem razoável, e se você precisa passar por esse processo com frequência, isso também não é um bom sinal do ponto de vista de segurança
Em contrapartida, sites vivem pedindo permissão para notificações, que quase nunca quero. Ao revisar minhas configurações recentemente, fiquei surpreso com quantas eu tinha permitido por engano; acho que uns 5% foram cliques errados
Essa permissão é usada para criar um keylogger. Só isso. Como é uma permissão que permite escrever um keylogger, não deveria se resumir a um único clique, e o risco é grande o bastante para justificar etapas extras
spctl --master-disableuma vez e mais uma ida ao menu de configurações. Não entendo por que o TCC não pode funcionar assimPara pré-visualizações, a Apple poderia oferecer APIs para tarefas comuns. O sistema operacional forneceria a imagem e faria a amostragem numa taxa de atualização difícil de usar para gravação arbitrária
Combinações de teclas poderiam reutilizar a tecla de emoji, que hoje não permite bindings externos, para só autorizar a captura depois de uma certa “sequência mágica”. Se o sistema operacional gerenciasse os comandos de forma centralizada e passasse aos programas apenas o comando, e não as teclas concretas, ainda haveria a vantagem de centralizar a resolução de conflitos. Hoje isso é bem doloroso no macOS
Isso não resolveria tudo, mas resolveria parte do problema. Deve haver maneiras melhores também. A Apple tem programadores inteligentes de sobra, então o time de produto deveria deixar que resolvessem um problema que claramente incomoda usuários especialistas
Antes do macOS 10.11, o Mission Control era bom. Quando você deslizava quatro dedos para cima, ele mostrava pré-visualizações de todos os Spaces, mas no 10.11 isso foi estragado sem motivo, e a barra passou a mostrar só nomes como “Desktop 1”, “Desktop 2”, exigindo passar o mouse para ver as pré-visualizações
O efeito prático é que usar Spaces passa a causar desorientação espacial e exigir memorização
Alguns softwares de terceiros fingem restaurar isso, mas fazem movendo o mouse para simular o hover, então há atraso e nenhuma integração adequada com as animações. Também havia patches que funcionavam desativando o SIP e injetando código (https://github.com/briankendall/forceFullDesktopBar), mas no fim deixaram de ser mantidos
Dez anos depois, fico me perguntando se ainda existe alguém dentro da Apple que se lembre de que essa UI já foi boa um dia
Mas não faço ideia de por que desktops e tela cheia precisariam de comportamentos de pré-visualização diferentes
A parte mais irritante dessa UX é que os Spaces são reordenados sem um motivo claro. Eu normalmente deixo algumas janelas de IDE abertas, então é cansativo ter de conferir toda hora se elas mudaram de lugar
Falta ao sistema operacional como um todo um conceito de projetos ou tarefas. Esse conceito deveria atravessar os aplicativos e estar profundamente integrado ao gerenciamento de janelas e aos Spaces
Multitarefa e troca de contexto vêm aumentando há anos, as mensagens instantâneas voltaram a intensificar isso, e fluxos de trabalho com agentes vão empurrar ainda mais nessa direção. Como o mesmo aplicativo é usado em várias tarefas, isso não é uma preocupação no nível do app, e sim algo que o sistema operacional precisa suportar
IDEs ajudam até certo ponto porque têm conceitos primitivos de workspace ou projeto e conseguem restaurar o contexto de código e terminal. Mas páginas web, agentes fora da IDE, chats relevantes com colegas, apps de gerenciamento de projeto e outras coisas conectadas sempre ficam de fora
Isso claramente não é uma questão de aplicativo, e sim uma preocupação no nível do sistema operacional. Alguns dos experimentos do iPad com arranjos alternativos de janelas pareciam promissores, mas pessoalmente não achei que fossem poderosos nem intuitivos o suficiente
Não entendo por que mais usuários avançados não veem essa configuração como ideal. Espero que o Zen Browser se torne uma alternativa sólida
¹https://blogs.kde.org/2026/01/17/streamline-plasma-with-acti...
Também gosto do fato de que os workspaces têm espaço infinito, então não preciso pensar em criar um novo só porque um deles ficou apertado demais
Não posso provar, mas acho que talvez eu tenha sido uma inspiração ou causa para a decisão da Apple de, no Leopard, “limitar inexplicavelmente o Spaces a uma única faixa horizontal”
Em 2009, fiz um vídeo conceitual de um gerenciador de janelas linear com navegação por gestos; hoje ele está quase esquecido, mas na época teve bastante cobertura na mídia de tecnologia e influenciou algumas provas de conceito no início dos anos 2010
Gerenciamento linear de janelas não é do gosto de todo mundo, mas ainda acho que é uma ideia válida. Este lançamento e a reação me animaram, e na verdade estou trabalhando em algo nessa área neste momento
Passei uma hora hoje tentando fazer isso funcionar como eu esperava, mas ainda há coisas estranhas. Mesmo desativando a reordenação automática baseada no uso, a ordem na prévia do gesto de deslizar com três dedos e a ordem real das janelas continuam diferentes. A ordem visual está como eu esperava, mas a ordem do swipe não é linear
https://github.com/mogenson/PaperWM.spoon
Eu realmente odeio esse design e o que ele fez com o Gnome. A grade era muito melhor
O gerenciamento de janelas do macOS está me impedindo de migrar para o Mac. Já usei soluções parecidas com o Aerospace, mas não consegui reproduzir a experiência rápida e sem atrito que tenho no i3wm
Infelizmente, o gerenciador de janelas do macOS é parecido com as notificações do iOS. Com o tempo, você se acostuma com a bagunça improdutiva, mas acaba deixando passar soluções melhores. E como provavelmente todo desenvolvedor de macOS usa Mac, há uma boa chance de eles não verem nem entenderem outras abordagens melhores
Fiquei chocado com o quão estupidamente tudo ao redor desse recurso foi feito. Coisas que eram possíveis alguns anos atrás agora não são mais. Por exemplo, alternar para desktops ou workspaces pelo teclado, e coisas como a grade
Com o app “AltTab”, pelo menos dá para trocar de aplicativo sem mouse, e com o raycast também dá para posicionar janelas, mas é doloroso que alternar e organizar no macOS seja muito mais lento do que num gerenciador de janelas em mosaico
Estou convencido de que a maior ameaça a uma boa UI é um grande número de designers profissionais de UI. Metade dos designers de UI está abaixo da mediana, e essas pessoas escolheram design de UI como profissão
Como não dá para fazer a carreira avançar ano após ano apenas defendendo o status quo, é preciso projetar algo novo. Acabam refazendo algo mesmo que o anterior funcionasse bem. Mas, como metade dos designers de UI está abaixo da mediana, há também 50% de chance de o novo design ser um retrocesso
E aí chegamos ao ponto de ter gente no palco dos eventos da Apple falando sobre o Liquid Glass. O triste é que muitos designers parecem focar só no visual e quase não entendem de usabilidade. Por exemplo, quantos designers que estão entrando agora no setor conhecem a lei de Fitts? Quantos designers resistiram aos problemas óbvios de usabilidade do Liquid Glass? Sinceramente, tirando raras exceções, os designers são o problema
Coisas como o propósito do produto, o propósito deste pedaço de UI, fatores humanos, design de interação e experiência do usuário para além dos elementos estéticos entram nisso
Fala-se muito sobre se importar com cada uma dessas coisas, mas na prática elas raramente são consideradas. Porque não são os fatores que fazem você vencer num portfólio de entrevista ou em materiais para apresentar à liderança. No fim, a estrutura acaba filtrando fortemente esses elementos
Fugindo um pouco do assunto, a antiga Aqua UI parecia muito melhor. Não só era muito mais fácil ver o que era controle e o que era texto, como também era visualmente mais bonita
Havia um botão que parecia botão para cada ação possível, e ao olhar para a barra de ferramentas muitas vezes dava para entender todo o conjunto de ações possíveis. Você não precisava adivinhar se uma parte do conteúdo era clicável ou editável
Hoje em dia há espaço em branco demais em tudo. A UI moderna do Painel de Controle do Windows muitas vezes parece uma parede de texto em várias colunas com muito vazio e alguns interruptores espalhados. Para caber a mesma quantidade de opções que as UIs antigas, foi preciso esconder alguns toggles com a justificativa de que “ninguém mais precisa disso” ou adicionar etapas intermediárias de navegação. Como resultado, o novo Painel de Controle parece inchado e menos útil
Isso resolve uma irritação que enfrento dezenas de vezes por dia
Grade é ótimo, mas melhor ainda é a troca instantânea de display virtual
Entre as “mil pequenas irritações para te matar” do macOS moderno, poucas coisas são tão ruins quanto ter de apertar Ctrl→→→→→→→ e continuar aguentando a mesma animação repetida
Não posso afirmar com certeza o motivo, mas dá a sensação de que designers visuais imaturos acham que queremos ver animações legais repetidamente o dia inteiro, por décadas, e não só numa demo ou num tutorial visto uma vez
Não é o caso. Uma vez já bastou. Não queremos animação. E a implementação de “reduzir movimento” é insultante. O atraso continua igual, só troca para um crossfade borrado
Não faço ideia de como uma empresa com recursos infinitos e designers talentosos consegue fazer um negócio desses
Uso o Instant Space Switcher como solução voltada especificamente para esse problema, e muda a vida
Ctrl-UpArrowe depois clicar no Space desejado. Não é instantâneo, mas quando há muitos desktops pode ser melhor do que ir passando um por umTambém considero essencial desativar “Automatically rearrange Spaces based on most recent use”
Pessoalmente, eu abro só um app por desktop e uso apenas Command-Tab. Se você continuar segurando Command depois de Command-Tab, dá para escolher o app sem precisar percorrer todos eles
defaults write com.apple.dock expose-animation-duration -float 0.05; killall DockQuando dizem que “a experiência de desktop do Mac de 20 anos atrás era melhor do que a de hoje”, 20 anos atrás significa 2006. Eu ainda uso hoje a mesma experiência de desktop de 20 anos atrás
Uso Fvwm2, e os desktops virtuais em grade de que o autor sente falta eu continuo aproveitando com o recurso de desktop virtual do Fvwm2 e antes dele do Fvwm. Um dos motivos para eu ter migrado para o Fvwm também foi justamente o desktop virtual em grade, e embora eu não lembre exatamente quando, foi ali pelo meio para o fim dos anos 1990
Minha configuração do Fvwm2 foi sendo refinada aos poucos ao longo do tempo, mas em nenhum momento algum designer corporativo decidiu que eu não deveria mais usar um recurso que eu já usava
Software proprietário não tem em mente o interesse do usuário. Só olha para o preço da ação ou para a receita do próximo trimestre
Antes de migrar para Plasma e Wayland, usei XFCE por quase 15 anos com praticamente a mesma configuração, sem ser atrapalhado por atualizações
Quando a Apple removeu os Spaces verticais, eu realmente não consegui acreditar. Como eu precisava pular telas desnecessárias, isso deixou o recurso inútil para mim, e acabei parando de usar. Não era prático