HN Show: FlashSpace – una alternativa rápida y de código abierto a macOS Spaces
(github.com/wojciech-kulik)- FlashSpace es un gestor de espacios de trabajo virtuales que complementa o reemplaza Spaces de macOS, con el objetivo de lograr cambios rápidos de espacio de trabajo sin esperar las animaciones de macOS
- Permite asignar apps y pantallas a cada espacio de trabajo, y al cambiar muestra las apps asignadas de esa pantalla mientras oculta las demás, lo que habilita cambios independientes en múltiples pantallas
- Ofrece Space Control, Workspace Switcher basado en
Option + Tab, Focus Manager, perfiles, gestos de deslizamiento, Floating Apps, configuración en JSON/YAML/TOML, CLI e integración con SketchyBar y Raycast - Requiere macOS 14.0 o superior y la opción “Displays have separate Spaces”, y admite instalación con Homebrew, descarga de binarios y compilación desde el código fuente
- No soporta espacios de trabajo por ventana individual ni gestión de layouts, y mantiene un diseño centrado en mostrar/ocultar apps por la falta de una API pública en macOS para ocultar ventanas específicas y por priorizar la simplicidad y el rendimiento
Qué hace FlashSpace
- FlashSpace es un gestor de espacios de trabajo virtuales para macOS, diseñado para complementar y reemplazar Spaces de macOS
- Su objetivo es ofrecer cambios rápidos de espacio de trabajo sin tener que esperar las animaciones de macOS
- A cada espacio de trabajo se le asignan apps, y el espacio de trabajo en sí se asigna a una pantalla específica
- Al cambiar a un espacio de trabajo, las apps asignadas se muestran automáticamente, y las demás apps de esa misma pantalla se ocultan
- Es posible cambiar espacios de trabajo de forma independiente en varias pantallas
Instalación y flujo básico de uso
- Los requisitos son macOS 14.0 o superior y tener activada la opción “Displays have separate Spaces” en
Desktop & Dockde la configuración del sistema - Admite instalación mediante Homebrew, descarga de binarios de lanzamiento y compilación desde el código fuente
- El comando de instalación con Homebrew es
brew install flashspace - Los binarios se pueden descargar desde la Releases Page
- El comando de instalación con Homebrew es
- El flujo básico de uso es el siguiente
- Mover todas las apps a un único Space de macOS por pantalla
- Crear espacios de trabajo
- Asignar apps
- Asignar una pantalla al espacio de trabajo o usar el modo dinámico
- Configurar atajos de teclado para activación rápida
- Repetir el mismo proceso para otros espacios de trabajo
- Cambiar entre los espacios de trabajo configurados con atajos
- Para mantener una misma app en varios espacios de trabajo, se puede usar la función Floating Apps en la configuración de la app, o agregar la app a varios espacios de trabajo desde la ventana principal de la app
Funciones principales
- Ofrece cambios rápidos de espacio de trabajo y soporte para múltiples pantallas
- Space Control permite previsualizar todos los espacios de trabajo en una cuadrícula y cambiar entre ellos
- Se puede cambiar de espacio de trabajo con
0-9y las flechas de dirección
- Se puede cambiar de espacio de trabajo con
- Workspace Switcher muestra la lista de espacios de trabajo y permite cambiar entre ellos con
Option + Tabde forma predeterminada- Funciona de manera similar al selector de apps de macOS con
CMD + Tab
- Funciona de manera similar al selector de apps de macOS con
- Focus Manager permite mover el foco entre ventanas en la dirección deseada mediante atajos de teclado, y también soporta saltos entre pantallas
- Otras funciones incluyen
- Activación del espacio de trabajo tras detectar el foco de una app
- Cursor manager que centra automáticamente el cursor en la ventana activa
- Profiles para cambiar rápidamente entre varias configuraciones
- Barra de menú con iconos y texto configurables por espacio de trabajo
- Personalización del comportamiento de los gestos de deslizamiento del trackpad
- Configuración mediante GUI y archivos de configuración
- Soporte para archivos de configuración en JSON, YAML y TOML
- Control de la app mediante CLI
- Soporte para Picture-in-Picture
- Integración con SketchyBar
- Soporte para la extensión de Raycast
Formas de asignar pantallas
- FlashSpace soporta dos formas de asignar pantallas: modo estático y modo dinámico
- El modo estático es el predeterminado y asigna cada espacio de trabajo a una pantalla específica
- Es adecuado para quienes quieren espacios de trabajo dedicados por pantalla, como en macOS Spaces
- Puede resultar complicado si se usan varias pantallas y se cambia la disposición con frecuencia
- El modo dinámico asigna automáticamente cada espacio de trabajo a la pantalla donde están ubicadas las apps de ese espacio
- Un mismo espacio de trabajo puede mostrarse en varias pantallas al mismo tiempo
- Es útil cuando se quiere reorganizar espacios moviendo apps entre pantallas
- En este modo no se pueden mostrar espacios de trabajo vacíos
- El modo de asignación de pantallas se puede cambiar en Workspaces dentro de la configuración de la app
Soporte para Picture-in-Picture y limitaciones
- FlashSpace soporta el modo Picture-in-Picture, pero es una función experimental
- Esta función puede desactivarse en
App Settings -> Workspaces - macOS no ofrece una API pública para ocultar solo ventanas específicas, y al ocultar una app también se ocultan sus ventanas PiP
- Para evitar este problema, FlashSpace identifica si la app soporta PiP y oculta en una esquina de la pantalla todas las ventanas excepto la ventana PiP
- Si la ventana PiP no es visible, se aplica el comportamiento estándar
- Los navegadores compatibles son Safari, Zen Browser, Chrome, Firefox, Brave, Vivaldi, Arc, Dia, Opera, Microsoft Edge y Comet
- Si el idioma del navegador no está configurado en English, esta función puede no funcionar
Principios de diseño y funciones no compatibles por decisión
- Los valores del proyecto son el rendimiento, la simplicidad, la estabilidad, el comportamiento no intrusivo y la filosofía UNIX
- FlashSpace considera la gestión de espacios de trabajo como una sola tarea y sigue el enfoque de hacer bien esa tarea
-
Comportamiento no intrusivo
- FlashSpace no gestiona activamente las ventanas
- Si, después de cambiar a un espacio de trabajo, se abre una app que no está asignada a ese espacio, esa app se mostrará por encima de las apps del espacio de trabajo
- Este comportamiento permite acceder rápidamente a otras apps sin provocar glitches ni cambios de espacio de trabajo
- En los gestores de ventanas tipo tiling, los glitches pueden ser frecuentes por pop-ups o cuadros de diálogo no contemplados
- FlashSpace interactúa con el sistema sin interferir, al no intentar gestionar ventanas ni apps no asignadas
-
Sin soporte para espacios de trabajo por ventana individual
- FlashSpace no soporta el concepto de dividir las ventanas individuales de una app entre distintos espacios de trabajo
- Es una decisión intencional para mantener la app simple y rápida
- Se apoya en las funciones nativas de mostrar/ocultar para gestionar y cambiar espacios de trabajo de forma eficiente
- Este enfoque favorece la batería y no rompe funciones del sistema como Mission Control
- El soporte por ventana individual añadiría mucha complejidad y podría afectar negativamente el rendimiento
- macOS no tiene una API pública para ocultar ventanas específicas, y actualmente las opciones son mover la ventana a una esquina de la pantalla o minimizarla, pero ninguna ofrece una experiencia ideal
-
Sin soporte para layouts
- FlashSpace no soporta mover ventanas, cambiar su tamaño ni modificar layouts
- Estas funciones aumentarían mucho la complejidad y podrían afectar negativamente el rendimiento
- Haría falta mucho trabajo para cubrir todos los edge cases y glitches
- Se puede usar junto con apps de gestión de ventanas como Magnet, Rectangle o Raycast, por lo que no duplica esas funciones
Integraciones, CLI y compilación
- Puede integrarse con SketchyBar y otros, y ejecuta scripts configurables cuando cambia el espacio de trabajo
- La CLI permite gestionar espacios de trabajo, apps y perfiles
- Primero debe instalarse desde la sección CLI en la configuración de la app
- Se pueden consultar los comandos disponibles con
flashspace --help
- La compilación desde el código fuente usa XcodeGen para generar un proyecto de Xcode a partir de
project.yml- Después de clonar el repositorio, se instalan las dependencias con
brew bundle - Luego se ejecuta
xcodegen generatey se abreFlashSpace.xcodeprojen Xcode para compilar - Cada vez que se cambie de rama o se haga pull de cambios, hay que volver a ejecutar
xcodegen generate - Para generar el proyecto incluyendo la configuración de firma, se puede usar
XCODE_DEVELOPMENT_TEAM=YOUR_TEAM_ID xcodegen generate
- Después de clonar el repositorio, se instalan las dependencias con
Consejos de uso
- macOS tiene un bug por el que, después de salir del modo de reposo, algunas apps pueden aparecer en la pantalla incorrecta
- Ocurre si la app estaba oculta durante el reposo
- Si se encienden todas las pantallas antes de iniciar sesión tras reactivarlo, las apps pueden mostrarse en la pantalla correcta
- macOS 15 ofrece funciones para mover y redimensionar ventanas sin apps de terceros
- Se pueden encontrar en el submenú
Move & Resizedentro deWindowen la barra de menú - La personalización de atajos es limitada; para algo más flexible, conviene usar apps de gestión de ventanas como Raycast o Magnet
- Se pueden encontrar en el submenú
- Se puede cambiar el foco entre ventanas de una misma app con el atajo de macOS
Cmd + ` - SKHD es una herramienta CLI para definir atajos globales personalizados y puede usarse junto con la CLI de FlashSpace
- Los usuarios de Raycast pueden gestionar FlashSpace sin salir del teclado con la extensión de Raycast
1 comentarios
Me pregunto si es compatible con Amethyst. Quiero ventanas en mosaico, pero no quiero la latencia al cambiar de espacio
¡Muy bueno! Ojalá pudieran agregar una vista en cuadrícula de los espacios de trabajo. Extraño TotalSpaces
Llega en buen momento. Justo estaba volviendo a explorar opciones en este ámbito y me decidí por AeroSpace. Voy a probar este producto
¡Gracias! Lo acabo de instalar y hasta ahora funciona bien
Llevo más de un año usando AeroSpace para este propósito. Desactivé todas las funciones de mosaico en la configuración y solo uso dos atajos: cambiar de espacio de trabajo y mover la ventana actual a un espacio de trabajo. Es indispensable cuando trabajo en una pantalla pequeña