1 pontos por GN⁺ 20 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • 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 Accessibility do 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

    • Acho que você entendeu o problema, mas a conclusão não acompanha. Se existir uma forma de desligar isso, a avó também pode primeiro assistir a um vídeo de “como desligar” e seguir os passos, acabando sem segurança depois
      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
    • Mais do que isso, o motivo provavelmente é fazer o usuário parar por um instante e pensar se realmente quer fazer essa ação
      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 tem potencial especialmente malicioso. Basta pensar por um segundo para lembrar imediatamente do que dá para fazer com ela
      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
    • A solução seria permitir que usuários experientes provassem sua competência uma única vez, e não toda vez. O motivo de o Gatekeeper nunca ter sido um problema para mim é que bastava spctl --master-disable uma vez e mais uma ida ao menu de configurações. Não entendo por que o TCC não pode funcionar assim
    • Isso é uma solução, mas o problema fundamental é que a Apple não fez uma granularidade suficiente. Não há motivo para agrupar gravação arbitrária de tela com captura de janela, nem keylogging arbitrário com ativação de atalhos
      Para 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

    • Eu só usava o Mission Control no modo tela cheia, então não conhecia esse comportamento. Se você deslizar três ou quatro dedos para cima numa janela em tela cheia, as pré-visualizações aparecem imediatamente
      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
    • A tela com “Desktop 1”, “Desktop 2” é realmente irritante. Hoje em dia monitores de alta resolução são comuns, então mesmo que a intenção fosse economizar espaço, isso já não faz mais sentido
  • 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

    • Sinto que o Arc resolveu isso quase perfeitamente com abas verticais e vários “spaces”. Como hoje em dia quase tudo acontece no navegador, isso cobria 99% do que eu precisava
      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
    • O KDE tentou isso com Activities. Pessoalmente, nunca achei útil
      ¹https://blogs.kde.org/2026/01/17/streamline-plasma-with-acti...
    • Eu uso workspaces do Niri dessa forma. Normalmente dou ao espaço o nome do branch e deixo aberto em cada workspace um navegador, um editor e alguns terminais
      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
    • No macOS, monto algo parecido com o Aerospace
  • 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

    • Gosto do conceito. Supondo que essa tenha sido mesmo a inspiração, queria saber como você se sente em relação à usabilidade
      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
    • PaperWM é o mais próximo dessa abordagem. Também tem porta para macOS
      https://github.com/mogenson/PaperWM.spoon
    • O vídeo é realmente excelente. Se fosse feito em 2D e só adicionasse atalhos para ir aos Spaces, eu usaria na hora
    • O vídeo ainda existe? Seria ótimo se você pudesse compartilhar o link
    • Obrigado por confessar
      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

    • Há alguns meses migrei do sway para o macOS e tentei me manter o mais aberto possível ao estilo de vida Mac, porque não queria ficar brigando com o sistema operacional. Mas o Mission Control é realmente um lixo imprestável
      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

    • Como alguém que formalmente está em uma função de design por causa da descoberta de novos produtos, eu me identifico. Há muitos designers gráficos com pouco ou nenhum interesse em design de produto de verdade
      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
    • Essa lógica pressupõe que todos os designers em cargos influentes de grandes empresas de tecnologia sigam uma distribuição em curva normal. Não estou defendendo a UI/UX moderna, mas é uma suposição bem forte
  • 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

    • Para ser justo, outras UIs também eram assim. Botões quadrados com bevel no estilo Windows 95 fazem o conteúdo parecer organizado
      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
    • Curiosamente, quando o Aqua era novidade, eu achava que o Platinum parecia muito melhor
  • 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

    • Quase tudo no Mac e no iOS é assim, e ficou mais irritante ao longo dos últimos 10 anos
      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
    • É realmente difícil entender por que você precisa ficar sentado vendo aquela animação até o fim. Nem mesmo as teclas pressionadas são aplicadas antes de a animação de ir para o novo desktop terminar. É um design completamente insano
      Não faço ideia de como uma empresa com recursos infinitos e designers talentosos consegue fazer um negócio desses
    • Sim, é o pior
      Uso o Instant Space Switcher como solução voltada especificamente para esse problema, e muda a vida
    • Você também pode apertar Ctrl-UpArrow e depois clicar no Space desejado. Não é instantâneo, mas quando há muitos desktops pode ser melhor do que ir passando um por um
      També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
    • Você já tentou isto? defaults write com.apple.dock expose-animation-duration -float 0.05; killall Dock
  • Quando 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

    • Mesmo assim, pelo menos temos uma renderização de fontes decente
    • Lendo isso como usuário de Linux, fiquei quase com raiva. É difícil imaginar ter um fluxo de trabalho que você lapidou por anos conforme suas necessidades sendo tomado por decisão de uma empresa
      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