- AeroSpace es un gestor de ventanas en mosaico en fase beta para macOS que ofrece una forma de uso similar a i3, con un diseño basado en árboles y un flujo de trabajo centrado en el teclado
- En lugar de depender de los Spaces nativos de macOS, usa su propia emulación de espacios de trabajo virtuales, con cambios rápidos entre espacios sin animaciones y una configuración que funciona sin desactivar SIP
- La configuración se basa en TOML de texto plano y prioriza la CLI, incluyendo manpage y autocompletado de shell; además, soporta múltiples monitores con un paradigma similar al de i3
- Actualmente está en Public Beta: se puede usar en el día a día, pero se esperan breaking changes antes de la versión 1.0; antes de 1.0 aún faltan un gran refactor, combinadores estilo shell y la investigación de la API de atajos globales
- El proyecto prioriza a usuarios avanzados y desarrolladores, el uso centrado en teclado, las funciones prácticas y un mantenimiento basado en APIs públicas de accesibilidad; la configuración por GUI, la integración con macOS Spaces y el ricing no son prioridad
El entorno de mosaico para macOS que ofrece AeroSpace
- AeroSpace es un gestor de ventanas en mosaico tipo i3 para macOS
- Hay demos y documentación disponibles por separado
Funciones clave y diseño
- La disposición de ventanas se basa en el paradigma de árbol típico de un gestor de ventanas en mosaico
- La experiencia de uso está inspirada en i3
- El cambio entre espacios de trabajo es rápido y sin animaciones, y no requiere desactivar SIP
- Los Spaces nativos de macOS tienen limitaciones importantes, así que no se usan; en su lugar, AeroSpace emula sus propios espacios de trabajo virtuales
- La configuración usa texto plano apto para dotfiles, y puedes ver un ejemplo de configuración por defecto en default-config.toml
- El diseño prioriza la CLI e incluye manpage y autocompletado de shell
- Soporta múltiples monitores con un paradigma similar al de i3
Instalación y condiciones de seguridad
- El método de instalación recomendado es Homebrew cask, con actualizaciones automáticas
brew install --cask nikitabobko/tap/aerospace
- En configuraciones con varios monitores, hay que verificar que estén colocados correctamente
- Otros métodos de instalación están en la guía de instalación
- AeroSpace no está notarized
- El script de instalación de Homebrew está configurado para borrar automáticamente el atributo
com.apple.quarantine
- Gracias a esto, la app debería funcionar de inmediato sin mostrar la advertencia “Apple cannot check AeroSpace for malicious software”
Estado del proyecto y trabajo pendiente antes de 1.0
- El estado actual es Public Beta
- Se puede usar a diario, pero hay que esperar breaking changes antes de llegar a 1.0
- Aún quedan los siguientes puntos antes del lanzamiento de 1.0
- Problemas de rendimiento: ya se completó la implementación de un thread por aplicación para sortear la AX API bloqueante de macOS
- Gran refactor: reescribir la estructura de datos central mutable con doble enlace como un árbol persistente inmutable con enlace simple
- Es importante para la estabilidad y el rendimiento potencial
- Ayuda a corregir problemas de estabilidad donde las ventanas pueden moverse aleatoriamente al espacio de trabajo enfocado
- Ayuda con el soporte de pestañas nativas de macOS
- Implementación de combinadores estilo shell
- El enfoque mínimo más probable es introducir
||, &&, ; y el comando eval para enviar varios comandos a la vez
- Investigación sobre el posible uso de la API
CGEvent.tapCreate para atajos globales
- Puede que permita distinguir entre modificadores izquierdo y derecho, o puede que no
- Entre los grandes temas previstos para después de 1.0 están sticky windows y Dynamic TWM
Valores del proyecto y no objetivos
- AeroSpace está dirigido a usuarios avanzados y desarrolladores
- Apunta a un uso centrado en el teclado
- Se procura evitar breaking changes en el archivo de configuración, la CLI y el comportamiento, pero pueden ocurrir breaking changes cuidadosos para evitar el estancamiento del software
- Después de 1.0, si hay breaking changes se garantiza aumentar la versión major siguiendo Semver
- Antes de 1.0, los breaking changes pueden ocurrir sin más
- La GUI no se usa salvo que sea estrictamente necesaria
- No está previsto ofrecer una GUI para configuración
- Sí se permite un icono de menú de estado para retroalimentación visual
- Las funciones se priorizan según su utilidad práctica, y características visuales como bordes de ventana, transparencia o animaciones no se consideran funciones prácticas
- Se evita en lo posible la “dark magic”, como APIs privadas o inyección de código
- Actualmente solo se usa una API privada,
_AXUIElementGetWindow, para obtener el ID de ventana de un objeto de accesibilidad
- Fuera de eso, se usan las APIs públicas de accesibilidad de macOS
- No requiere desactivar SIP
- El objetivo es una arquitectura resistente a las actualizaciones de macOS y fácil de mantener
- No es un objetivo integrarse bien con las funciones existentes de macOS
- No reconoce la existencia de macOS Spaces y usa su propia emulación de espacios de trabajo
- El ricing tiene baja prioridad
- Solo hay soporte mínimo mediante algunos callbacks para integrar gaps y bar
- Al maintainer actual no le interesa el ricing, y la mayoría de los issues relacionados tienen baja prioridad o se ignoran
- Si aparecen más maintainers, la postura frente al ricing podría cambiar
Compatibilidad, comunidad y proyectos relacionados
- La compatibilidad con macOS depende de la forma de compilación
- Ejecutar el binario de AeroSpace: macOS 13+
- Debug build desde el código fuente: macOS 14+
- Release build desde el código fuente: macOS 15+, requiere Xcode 26+
- No se reciben issues de inmediato; primero se pide crear una Discussion
- GitHub Discussions incluye canales de general, anuncios, anuncios de lanzamientos, ideas de funciones, general, bugs potenciales y preguntas y respuestas
- Se mencionan los siguientes proyectos relacionados
- Amethyst: gestor de ventanas en mosaico estilo xmonad
- InstantSpaceSwitcher: cambia de space al instante sintetizando gestos de trackpad a una velocidad artificialmente alta
- yabai: gestor de ventanas en mosaico para macOS basado en binary space partitioning
1 comentarios
Opiniones en Hacker News
Lo uso todos los días y, en conclusión, es la mejor forma de gestionar ventanas en Mac, pero no llega al nivel de i3/sway.
En particular, el soporte para arrastrar ventanas y reubicarlas según su posición relativa entre sí es muy limitado, así que no se pueden crear nuevas divisiones verticales/horizontales como en sway. Por eso, para armar la disposición de ventanas que quiero, casi siempre tengo que dar rodeos incómodos con comandos de teclado.
Por ejemplo, si hay dos ventanas lado a lado y quiero dividir verticalmente una de ellas, en sway basta con abrir una nueva ventana y arrastrarla a la mitad superior/inferior de la ventana existente. En AeroSpace, lo mejor que encontré fue abrir una nueva ventana, convertir las tres ventanas en una pila vertical, luego enfocar la ventana que originalmente estaba a la izquierda y ejecutar
move left.Si tienes activada la normalización (normalization), no hace falta “cambiar a pila vertical”.
En esta disposición:
h_tiles
├── window1 (focused)
├── window2
└── window3
Al ejecutar
move left, queda así:h_tiles
├── window1 (focused)
└── v_tiles
├── window2
└── window3
Ni sabía que en sway se podían arrastrar y soltar ventanas. Yo selecciono la ventana que quiero dividir, configuro la división vertical con
Command + vy creo una nueva ventana, normalmente una terminal.O muevo ventanas con
Command + Shift + [hjkl].Pienso probarlo para ver si primero resuelve mi problema principal. Estoy buscando una forma en Mac de que recuerde la disposición de pantallas de manera razonable.
Cada vez que despierta después de arrancar, mi escritorio con 3 pantallas queda en un estado de amnesia total.
Idealmente, quisiera administrar yo mismo los espacios de trabajo y poder usar solo la pantalla de la laptop o 2-3 monitores externos en escritorios distintos, en el trabajo y en casa.
Uso Spectacle, pero ya no tiene soporte.
No he probado esto, pero uso yabai y funciona exactamente de la forma que describiste.
Me parece muy interesante que no haya que desactivar
SIP. Prácticamente todos los gestores de ventanas similares requieren desactivar SIP, y eso me hacía dudar.Me pregunto qué hace distinto AeroSpace para poder funcionar con SIP.
Lo que encontré en el README:
AeroSpace no te pide desactivar SIP (System Integrity Protection). Por ejemplo, yabai requiere desactivar SIP para usar algunas funciones. AeroSpace busca otra forma, por ejemplo emulando espacios de trabajo, o directamente no implementa esa función. La transparencia de ventanas y las sombras de ventanas no son funciones prácticas.
Eso sí, la función de yabai en la que el foco sigue al mouse me encanta, así que me pregunto si sería posible usar yabai solo para esa función, mientras AeroSpace se encarga de las funciones tipo i3.
Excelente. Hasta ahora venía usando Amethyst, pero AeroSpace me gustó más de inmediato.
Lo que más me molesta de Amethyst es que lanza las ventanas de forma muy lenta e inestable. En AeroSpace, las ventanas se mueven a otro espacio de trabajo/monitor al instante y sin fallar.
También me gusta que abandone por completo los espacios de trabajo integrados de macOS y use sus propios espacios de trabajo virtuales. Como dice el autor, el enfoque integrado es bastante insatisfactorio, y gracias a este método una configuración con varios monitores se vuelve soportable e incluso algo agradable de manejar.
En la computadora del trabajo no podía usar yabai porque requería desactivar SIP, y el autor de AeroSpace se opone explícitamente a eso; esa decisión me parece razonable.
Cuando usaba Linux pasé de i3 a xmonad, pero en macOS AeroSpace definitivamente me parece mejor. Los tres gestores de ventanas de macOS están por debajo de los gestores de ventanas reales de Linux, pero AeroSpace parece estar cerca de lo mejor posible dentro de sus límites.
Me gusta el enfoque de Spaces falsos.
Alguna vez pensé en intentar algo parecido minimizando ventanas, pero nunca lo hice en la práctica.
En macOS, por la falta de APIs, el tiling inevitablemente se vuelve deprimente. Aun así, este enfoque probablemente sea el de mejor rendimiento.
Probé yabai, pero solo lo usaba para mover ventanas y para que el foco siguiera al mouse, no para tiling. Era inestable, y no por culpa de yabai.
Gracias a nikitabobko.
Ahora, si encuentro la forma de modificar alt-tab para que ignore las ventanas de todos los espacios de trabajo falsos que quedaron agrupadas en una esquina, lo probaría de inmediato.
JankyBorders, enlazado en la documentación, también está bueno.
https://github.com/koekeishiya/yabai
https://github.com/lwouis/alt-tab-macos
https://github.com/FelixKratz/JankyBorders
alt+h/alt+j.Command+Tabes un selector global de ventanas, mientras que los atajos anteriores son para cambio local dentro del contexto del espacio de trabajo.Ya me había acostumbrado bastante a las herramientas de gestión de ventanas de Raycast, pero en la práctica es difícil usarlas junto con AeroSpace.
Por ejemplo, en Raycast se puede usar la opción
reasonable sizepara abrir una ventana con un tamaño adecuado y centrarla. También se pueden crear divisiones de mitad izquierda/mitad derecha, maximizar o usar cuadrantes/tercios.Pero en AeroSpace, si intento mover una ventana dentro de un tile a la mitad izquierda, la mitad derecha, los 2/3 izquierdos, o hacerla flotante con
reasonable size, no funciona.También hay un bug al mover apps con “next desktop” y “previous desktop”. Parece que AeroSpace implementa los varios escritorios de Mac como sus propios espacios de trabajo, así que la guía en video en realidad muestra el cambio entre distintos espacios de trabajo, no entre distintos escritorios.
Como resultado, si usas “next desktop” y “previous desktop”, el tiling se rompe por completo. Es una lástima: si los espacios de trabajo estuvieran conectados directamente con cada escritorio de Mac, de modo que moverse de espacio de trabajo equivaliera a moverse de escritorio, habría tenido cierta compatibilidad con Raycast y con las funciones nativas de macOS.
Raycast es realmente bueno.
Creo que en el futuro se va a consolidar como una app estándar para los power users de Mac.
Tiene tantas funciones útiles que tengo que explorarlo en serio. Yo uso sobre todo la integración con Linear.app.
Durante las últimas 5 versiones de macOS he usado bastante yabai en mi computadora de trabajo sin desactivar SIP.
Me gusta mucho, y el tiling solo se vuelve inestable más o menos una vez cada varios días. Aunque suelo ejecutar comandos de yabai al menos una vez por minuto, así que tengo
yabai --restart-serviceasignado a un atajo de teclado, y al ejecutarlo siempre vuelve de inmediato.Por eso me parece bastante estable y excelente. El multimonitor es difícil y no lo uso mucho, pero las pilas y la minimización rápida tipo “pantalla completa” son realmente buenas.
En algunas actualizaciones de versión, el antivirus de la empresa lo detecta como virus y lo desactiva durante 24 horas; ese día usar la computadora se siente tan torpe y deprimente que dan ganas de no hacerlo.
Lo he estado probando desde hace meses. i3 es casi perfecto y AeroSpace es un buen intento, pero está bastante lejos de i3 y es bastante inestable.
Creo que probablemente sea porque Mac OS X no permite un control completo como un gestor de ventanas de Unix.
Aun así, todavía no he encontrado algo mejor. Cuando Linux funcione bien en Apple Silicon, pienso instalarlo. Al menos para mí, i3 por sí solo ya es razón suficiente para usar Linux, y Mac OS X es realmente malo en cuanto a gestor de ventanas.
Toqué un poco un área cercana a esto como proyecto personal, y se debe a que las API oficiales son limitadas.
Al final uno depende mucho de API privadas no documentadas y de hacks. Como son para uso interno, son inestables, y el propio sistema operativo tampoco está diseñado para cooperar bien en situaciones donde hay mucha interferencia con la gestión de ventanas/procesos. Por eso el sistema operativo y las apps de terceros suelen pisarse los talones.
Tengo el mismo problema. Todavía no he encontrado un gestor de ventanas que maneje bien el modo de pantalla completa nativo de OSX.
AeroSpace se descontrola cuando se usa la pantalla completa nativa. Se confunde sobre dónde debe poner el foco.
En mi caso:
Workspace 1: terminal
Workspace 2: slack app
Open chrome in native full screen
Ahora, al cambiar al workspace 1, aparece el problema.
Por ahora pienso seguir usándolo sin apps en pantalla completa nativa. Espero que así funcione mejor.
Me da curiosidad la diferencia de experiencia de usuario entre este producto y Yabai. No creo que el tema de SIP en Yabai sea un gran problema. Entre los usuarios de Yabai que conozco no hay nadie que desactive SIP, y todos parecen usarlo bien.
Me pregunto si la diferencia será el estilo i3.
Personalmente uso una utilidad que, como Fluxbox, permite redimensionar y mover ventanas con el mouse desde cualquier parte de la ventana mientras mantienes presionada una combinación de teclas modificadoras. No está automatizado, pero tampoco es inestable. Más que ir hacia un sistema totalmente gestionado, se acerca a hacer que el modo flotante sea mucho más fácil reduciendo el movimiento del mouse.
He usado mucho ambos y prefiero AeroSpace.
Para mí, lo decisivo es el soporte multimonitor, y además tiene otras pequeñas ventajas.
En Yabai, si mueves un espacio de trabajo a otro monitor, su ID cambia y ya no puedes acceder a él de forma consistente con atajos de teclado.
alt+2se rompe porque ya no es el workspace 2, sino el 11 u otro número. En AeroSpace puedes mover fácilmente un espacio de trabajo entre monitores conalt+myalt+shift+m.Otra función es que las ventanas se acoplan al instante, sin la animación de Mission Control. Eso era algo que me molestaba muchísimo.
Esas son las dos funciones que necesito casi todos los días, y por la falta de buen soporte de espacios de trabajo Yabai para mí es casi completamente inutilizable.
En Yabai, para manejar Spaces de alguna forma, cambiar el orden de apilamiento de las ventanas o usar muchas otras funciones, tienes que desactivar SIP [0].
Si no usas esas funciones, ya es elección de cada quien, pero para muchos usuarios son funciones clave.
[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
Me pregunto en qué se diferencia de Amethyst. Amethyst se volvió mucho más estable recientemente y lo estoy usando con gusto.
La configuración basada en texto me da una primera impresión bastante buena, pero no sé si valga la pena cambiarme.
Hasta ahora venía usando Amethyst, pero AeroSpace me gustó más de inmediato.
Lo que más me molesta de Amethyst es que mueve las ventanas de forma muy lenta e inestable. En AeroSpace, las ventanas se mueven a otros espacios de trabajo/monitores al instante y sin fallar.
También me gusta que abandone por completo los espacios de trabajo integrados de macOS y use sus propios espacios de trabajo virtuales. Gracias a eso, una configuración multimonitor se vuelve soportable y hasta un poco agradable de manejar.
En mis épocas de Linux pasé de i3 a xmonad, pero en macOS AeroSpace definitivamente me parece mejor. Los tres gestores de ventanas de macOS no llegan al nivel de los gestores de ventanas reales de Linux, pero AeroSpace parece acercarse a lo mejor posible dentro de sus límites.
En mi experiencia, AeroSpace es mucho mejor en la mayoría de los aspectos.
Tiene algunas cosas raras y tengo que abrir algunos reportes de bugs, pero hizo que macOS fuera mucho más soportable que con Amethyst.
En Amethyst también se puede usar configuración basada en texto.
https://github.com/ianyh/Amethyst/blob/development/docs/conf...
He estado usando esto durante los últimos meses y, en general, me gusta. Me gusta que todo se configure en un solo archivo, es decir, que no tenga GUI
Un problema es que, cuando una app usa las pestañas nativas de Mac, AeroSpace trata cada pestaña como una ventana, por lo que la función de pantalla completa se rompe por completo. Alacritty es un ejemplo, y es bastante raro
Hay un issue relacionado abierto:
https://github.com/nikitabobko/AeroSpace/issues/68