3 pontos por GN⁺ 2025-02-10 | 1 comentários | Compartilhar no WhatsApp
  • O FlashSpace é um gerenciador de workspaces virtuais que complementa e substitui o Spaces padrão do macOS, com o objetivo de oferecer troca rápida de workspaces sem esperar pelas animações do macOS
  • Permite atribuir apps e displays a cada workspace e, ao alternar, mostra os apps atribuídos naquele display e oculta os demais, oferecendo alternância independente em múltiplos displays
  • Oferece Space Control, Workspace Switcher baseado em Option + Tab, Focus Manager, perfis, gestos de swipe, Floating Apps, configuração em JSON/YAML/TOML, CLI e integração com SketchyBar e Raycast
  • Requer macOS 14.0 ou superior e a opção “Displays have separate Spaces” ativada; oferece instalação via Homebrew, download de binário e build a partir do código-fonte
  • Não oferece workspaces por janela individual nem gerenciamento de layout; mantém um design centrado em mostrar/ocultar apps por causa da ausência de uma API pública do macOS para ocultar janelas específicas e por motivos de simplicidade e desempenho

O que o FlashSpace faz

  • O FlashSpace é um gerenciador de workspaces virtuais para macOS, projetado para complementar e substituir o Spaces padrão do macOS
  • O objetivo é permitir troca rápida de workspaces sem esperar pelas animações do macOS
  • Apps são atribuídos a cada workspace, e o próprio workspace é atribuído a um display específico
  • Ao alternar para um workspace, os apps atribuídos são exibidos automaticamente, enquanto os outros apps no mesmo display são ocultados
  • É possível alternar workspaces de forma independente em vários displays

Instalação e fluxo básico de uso

  • Os requisitos são macOS 14.0 ou superior e a opção “Displays have separate Spaces” ativada em Desktop & Dock nas configurações do sistema
  • Os métodos de instalação incluem Homebrew, download do binário de release e build a partir do código-fonte
    • O comando de instalação via Homebrew é brew install flashspace
    • O binário pode ser obtido na Releases Page
  • O fluxo básico de uso é o seguinte
    • Mova todos os apps para um único macOS Space por display
    • Crie workspaces
    • Atribua apps
    • Atribua displays aos workspaces ou use o modo dinâmico
    • Configure atalhos para ativação rápida
    • Aplique o mesmo procedimento aos outros workspaces
    • Alterne para o workspace configurado usando o atalho
  • Para manter o mesmo app em vários workspaces, use o recurso Floating Apps nas configurações do app ou adicione o app a vários workspaces pela janela principal do app

Principais recursos

  • Oferece troca rápida de workspaces e suporte a múltiplos displays
  • O Space Control permite visualizar e alternar entre todos os workspaces em uma grade
    • É possível alternar workspaces com 0-9 e as setas do teclado
  • O Workspace Switcher exibe e alterna a lista de workspaces usando Option + Tab por padrão
    • Funciona de modo semelhante ao alternador de apps do macOS, CMD + Tab
  • O Focus Manager permite mover o foco entre janelas na direção desejada usando atalhos e também oferece suporte a saltos entre displays
  • Outros recursos incluem
    • Ativação de workspace após detectar o foco de um app
    • Cursor manager, que centraliza automaticamente o cursor na janela ativa
    • Profiles para alternar rapidamente entre várias configurações
    • Barra de menus com ícones e texto configuráveis por workspace
    • Personalização de ações de gestos de swipe no trackpad
    • Configuração via GUI e arquivos de configuração
    • Suporte a arquivos de configuração nos formatos JSON, YAML e TOML
    • Controle do app via CLI
    • Suporte a Picture-in-Picture
    • Integração com SketchyBar
    • Suporte à Raycast extension

Modos de atribuição de display

  • O FlashSpace oferece dois modos de atribuição de displays: modo estático e modo dinâmico
  • O modo estático é o padrão e atribui cada workspace a um display específico
    • É adequado para quem quer workspaces dedicados por display, como no macOS Spaces
    • Pode ser difícil quando se usa vários displays e se muda a disposição com frequência
  • O modo dinâmico atribui automaticamente cada workspace ao display onde estão os apps desse workspace
    • Um único workspace pode ser exibido em vários displays ao mesmo tempo
    • É útil quando você quer reorganizar workspaces movendo apps entre displays
    • Nesse modo, workspaces vazios não podem ser exibidos
  • O modo de atribuição de displays pode ser alterado em Workspaces nas configurações do app

Suporte e limitações do Picture-in-Picture

  • O FlashSpace oferece suporte ao modo Picture-in-Picture, mas ele é experimental
  • Esse recurso pode ser desativado em App Settings -> Workspaces
  • O macOS não oferece uma API pública para ocultar apenas janelas específicas; ao ocultar um app, a janela PiP também é ocultada
  • Para contornar esse problema, o FlashSpace identifica se o app oferece suporte a PiP e oculta no canto da tela todas as janelas, exceto a janela PiP
  • Se a janela PiP não estiver visível, o comportamento padrão é aplicado
  • Os navegadores compatíveis são Safari, Zen Browser, Chrome, Firefox, Brave, Vivaldi, Arc, Dia, Opera, Microsoft Edge e Comet
  • Se o idioma do navegador não estiver configurado como English, esse recurso pode não funcionar

Princípios de design e não suporte intencional

  • Os valores do projeto são desempenho, simplicidade, estabilidade, comportamento não intrusivo e a filosofia UNIX
  • O FlashSpace trata o gerenciamento de workspaces como uma única tarefa e segue a ideia de fazer bem essa tarefa
  • Comportamento não intrusivo

    • O FlashSpace não gerencia janelas de forma agressiva
    • Se, depois de alternar para um workspace, você abrir um app que não está atribuído a esse workspace, esse app será exibido por cima dos apps do workspace
    • Esse comportamento permite acessar rapidamente outros apps enquanto evita glitches ou trocas de workspace
    • Em gerenciadores de janelas em tiling, glitches podem ser comuns por causa de pop-ups ou caixas de diálogo não configurados
    • O FlashSpace interage com o sistema sem interferir, deixando de gerenciar janelas e apps não atribuídos
  • Sem suporte a workspaces por janela individual de app

    • O FlashSpace não oferece suporte ao conceito de separar janelas individuais de um app por workspace
    • Essa é uma decisão intencional para manter o app simples e rápido
    • Ele depende das funções nativas de mostrar/ocultar para gerenciar e alternar workspaces com eficiência
    • Essa abordagem é melhor para a bateria e não quebra recursos do sistema, como o Mission Control
    • Dar suporte a janelas individuais adicionaria muita complexidade e poderia impactar negativamente o desempenho
    • O macOS não tem uma API pública para ocultar janelas específicas; as opções atuais são mover a janela para o canto da tela ou minimizá-la, e ambas não são experiências ideais para o usuário
  • Sem suporte a layouts

    • O FlashSpace não oferece suporte a mover janelas, redimensioná-las nem alterar layouts
    • Esse recurso aumentaria muito a complexidade e poderia impactar negativamente o desempenho
    • Seria necessário muito trabalho para lidar com todos os casos de borda e glitches
    • Ele pode ser usado junto com apps de gerenciamento de janelas como Magnet, Rectangle e Raycast, portanto não duplica esses recursos

Integrações, CLI e build

  • É possível integrá-lo com SketchyBar e outros, executando scripts configuráveis quando o workspace muda
  • A CLI oferece suporte ao gerenciamento de workspaces, apps e perfis
    • Ela deve ser instalada primeiro em CLI nas configurações do app
    • Use flashspace --help para ver os comandos disponíveis
  • O build a partir do código-fonte usa XcodeGen para gerar um projeto Xcode a partir de project.yml
    • Após clonar o repositório, instale as dependências com brew bundle
    • Execute xcodegen generate e depois abra FlashSpace.xcodeproj no Xcode para fazer o build
    • É necessário executar xcodegen generate novamente sempre que trocar de branch ou fizer pull de alterações
    • Para gerar o projeto incluindo as configurações de assinatura, use XCODE_DEVELOPMENT_TEAM=YOUR_TEAM_ID xcodegen generate

Dicas de uso

  • O macOS tem um bug em que apps aparecem no display errado após o repouso
    • Isso acontece quando o app estava oculto durante o repouso
    • Se todos os displays forem ligados depois de despertar e antes do login, os apps podem aparecer no display correto
  • O macOS 15 oferece recursos de mover e redimensionar janelas sem apps de terceiros
    • Confira o submenu Move & Resize em Window na barra de menus
    • O ajuste de atalhos é limitado; para uma abordagem mais flexível, use apps de gerenciamento de janelas como Raycast e Magnet
  • É possível alternar o foco entre janelas do mesmo app com o atalho Cmd + ` do macOS
  • SKHD é uma ferramenta CLI para definir atalhos globais personalizados e pode ser usada junto com a CLI do FlashSpace
  • Usuários do Raycast podem gerenciar o FlashSpace sem tirar as mãos do teclado usando a Raycast extension

1 comentários

 
GN⁺ 2025-02-10
  • Estou curioso para saber se é compatível com o Amethyst. Quero janelas em mosaico, mas não quero a latência na troca de espaços

  • Muito bom! Espero que possam adicionar uma visualização em grade dos espaços de trabalho. Sinto falta do TotalSpaces

  • Em boa hora. Eu estava reavaliando as opções nessa área e acabei escolhendo o AeroSpace. Vou experimentar este produto

  • Obrigado! Acabei de instalar e, até agora, está funcionando bem

  • Uso o AeroSpace para esse propósito há mais de um ano. Desativei todos os recursos de tiling nas configurações e uso apenas dois atalhos: alternar para um espaço de trabalho e mover a janela atual para um espaço de trabalho. É essencial ao trabalhar em uma tela pequena

    • O AeroSpace tem problemas de desempenho, mas isso parece ser algo inerente às APIs disponíveis do macOS
    • O FlashSpace também parece sofrer com esse problema
    • Em relação à configuração, acho trabalhoso definir atalhos para cada espaço de trabalho. No AeroSpace, todas as letras e números do teclado viram automaticamente espaços de trabalho, e os atalhos são globais
    • Levando tudo isso em conta, prefiro uma ferramenta cujo objetivo principal seja resolver os problemas dos espaços de trabalho no macOS
    • Depois de mais testes, o FlashSpace não oferece suporte a janelas diferentes do mesmo app em espaços de trabalho distintos. Isso é um grande problema para o meu fluxo de trabalho