- AeroSpace ist ein Tiling Window Manager für macOS im Beta-Stadium, der eine i3-ähnliche Bedienung bietet und auf baumbasierte Layouts sowie einen tastaturzentrierten Workflow ausgerichtet ist
- Statt auf die nativen macOS Spaces zu setzen, nutzt AeroSpace eine eigene Emulation virtueller Workspaces und wirbt mit schnellen Workspace-Wechseln ohne Animationen sowie einer Konfiguration, die ohne Deaktivierung von SIP funktioniert
- Die Konfiguration basiert auf Plain-Text-TOML und ist CLI-first ausgelegt; enthalten sind manpages und Shell-Autovervollständigung, Multi-Monitor-Setups werden nach einem i3-ähnlichen Paradigma unterstützt
- Derzeit ist AeroSpace in der Public Beta und alltagstauglich, vor Version 1.0 sind jedoch Breaking Changes zu erwarten; vor 1.0 stehen noch ein größeres Refactoring, shellartige Kombinatoren und Untersuchungen zur globalen Shortcut-API aus
- Die Projektwerte sind auf Power-User und Entwickler, Tastaturzentrierung, praktische Funktionen sowie Wartung auf Basis öffentlicher Accessibility-APIs ausgerichtet; GUI-Konfiguration, Harmonie mit macOS Spaces und Ricing haben niedrige Priorität
Die macOS-Tiling-Umgebung von AeroSpace
- AeroSpace ist ein i3-like Tiling Window Manager für macOS
- Demo und Dokumentation werden separat bereitgestellt
Kernfunktionen und Design
- Die Fensteranordnung ist als Tiling Window Manager auf Basis eines Tree-Paradigmas aufgebaut
- Die User Experience ist von i3 inspiriert
- Workspace-Wechsel funktionieren schnell und ohne Animationen; eine Deaktivierung von SIP ist nicht erforderlich
- Die nativen macOS Spaces weisen erhebliche Einschränkungen auf und werden daher nicht genutzt; AeroSpace emuliert eigene virtuelle Workspaces
- Die Konfiguration erfolgt als Plain Text und eignet sich für dotfiles; ein Beispiel für die Standardkonfiguration findet sich in default-config.toml
- Das Design ist CLI-first und umfasst manpage sowie Shell-Autovervollständigung
- Multi-Monitor-Setups werden nach einem i3-ähnlichen Paradigma unterstützt
Installation und sicherheitsbezogene Bedingungen
- Die empfohlene Installationsmethode ist Homebrew cask, womit automatische Updates verfügbar sind
brew install --cask nikitabobko/tap/aerospace
- In Multi-Monitor-Umgebungen sollte geprüft werden, ob die Monitore korrekt angeordnet sind
- Weitere Installationsmethoden stehen im Installationsleitfaden
- AeroSpace ist nicht notarized
- Das Homebrew-Installationsskript ist so konfiguriert, dass es das Attribut
com.apple.quarantine automatisch entfernt
- Durch diese Konfiguration sollte die App direkt funktionieren, ohne die Warnung „Apple cannot check AeroSpace for malicious software“ anzuzeigen
Projektstatus und Arbeiten vor 1.0
- Der aktuelle Status ist Public Beta
- Die tägliche Nutzung ist möglich, vor Erreichen von 1.0 sollte jedoch mit Breaking Changes gerechnet werden
- Zu den Arbeiten, die ein 1.0-Release noch blockieren, gehören folgende Punkte
- Performance-Issue: Die Implementierung eines Threads pro application, um die blocking AX API von macOS zu umgehen, ist abgeschlossen
- Großes Refactoring: Neuschreiben der mutable double-linked core tree-Datenstruktur als immutable single-linked persistent tree
- Wichtig für Stabilität und potenzielle Performance
- Hilft dabei, ein Stabilitätsproblem zu beheben, bei dem Fenster zufällig in den fokussierten Workspace verschoben werden können
- Hilft bei der Unterstützung von macOS native tabs
- Implementierung shellartiger Kombinatoren
- Der wahrscheinlichste Minimalansatz ist die Einführung von
||, &&, ; sowie eines eval-Befehls, der mehrere Befehle auf einmal sendet
- Untersuchung der Möglichkeit, die API
CGEvent.tapCreate für globale Shortcuts zu verwenden
- Möglicherweise lassen sich linke und rechte modifier unterscheiden, möglicherweise auch nicht
- Zu den größeren Issues, die nach 1.0 geplant sind, gehören sticky windows und Dynamic TWM
Projektwerte und Nicht-Ziele
- AeroSpace richtet sich an Power-User und Entwickler
- Es ist auf tastaturzentrierte Nutzung ausgelegt
- Breaking Changes an Konfigurationsdatei, CLI und Verhalten werden nach Möglichkeit vermieden, können aber sorgfältig vorgenommen werden, um Software-Stagnation zu verhindern
- Nach 1.0 wird garantiert, dass bei Breaking Changes die Semver-Major-Version erhöht wird
- Vor 1.0 können Breaking Changes einfach auftreten
- Eine GUI wird nur eingesetzt, wenn sie unbedingt erforderlich ist
- Es ist nicht geplant, eine GUI zur Konfiguration bereitzustellen
- Ein Statusleisten-Icon für visuelles Feedback ist zulässig
- Funktionen werden nach praktischem Nutzen bewertet; optische Features wie Fensterränder, Transparenz und Animationen gelten nicht als praktische Funktionen
- „Dark Magic“ wie private APIs oder Code Injection wird nach Möglichkeit vermieden
- Derzeit wird nur eine private API,
_AXUIElementGetWindow, verwendet, um die window ID eines Accessibility-Objekts zu erhalten
- Ansonsten werden die öffentlichen accessibility APIs von macOS verwendet
- Eine Deaktivierung von SIP wird nicht verlangt
- Ziel ist eine Konfiguration, die robust gegenüber macOS-Updates und leicht wartbar ist
- Gute Integration mit bestehenden macOS-Funktionen ist kein Ziel
- AeroSpace erkennt die Existenz von macOS Spaces nicht an und nutzt eine eigene Workspace-Emulation
- Ricing hat niedrige Priorität
- Es gibt nur minimale Unterstützung für gaps und einige callbacks zur bar-Integration
- Der aktuelle Maintainer hat kein Interesse an Ricing; entsprechende Issues haben meist niedrige Priorität oder werden ignoriert
- Wenn weitere Maintainer hinzukommen, kann sich die Haltung zu Ricing ändern
Kompatibilität, Community und verwandte Projekte
- Die macOS-Kompatibilität hängt von der Build-Methode ab
- Ausführen des AeroSpace-Binary: macOS 13+
- debug build aus dem Source: macOS 14+
- release build aus dem Source: macOS 15+, Xcode 26+ erforderlich
- Issues werden nicht direkt angenommen; stattdessen wird darum gebeten, zuerst eine Discussion zu erstellen
- GitHub Discussions bietet Kanäle für Allgemeines, Ankündigungen, Release-Ankündigungen, Feature-Ideen, General, potenzielle Bugs sowie Fragen und Antworten
- Als verwandte Projekte werden genannt
- Amethyst: ein xmonad-artiger Tiling Window Manager
- InstantSpaceSwitcher: sofortiger Space-Wechsel durch Simulation künstlich schneller Trackpad-Gesten
- yabai: ein macOS-Tiling-Window-Manager auf Basis von binary space partitioning
1 Kommentare
Meinungen auf Hacker News
Ich nutze das täglich, und mein Fazit ist: Es ist die beste Methode, Fenster auf dem Mac zu verwalten, kommt aber nicht an i3/sway heran.
Insbesondere ist die Unterstützung dafür, Fenster per Drag-and-drop relativ zueinander neu anzuordnen, sehr eingeschränkt, sodass man nicht wie in sway neue vertikale/horizontale Splits erstellen kann. Um das gewünschte Fensterlayout zu bekommen, muss man deshalb meist umständlich über Tastaturbefehle ausweichen.
Wenn man zum Beispiel zwei Fenster links und rechts hat und eine Seite vertikal teilen möchte, öffnet man in sway ein neues Fenster und zieht es einfach in die obere/untere Hälfte des bestehenden Fensters. In AeroSpace war die beste Methode, ein neues Fenster zu öffnen, alle drei Fenster in einen vertikalen Stack umzuwandeln, dann das ursprünglich linke Fenster zu fokussieren und
move leftauszuführen.Wenn Normalisierung (normalization) aktiviert ist, muss man nicht „in einen vertikalen Stack wechseln“.
In diesem Layout:
h_tiles
├── window1 (focused)
├── window2
└── window3
führt
move leftzu folgendem Ergebnis:h_tiles
├── window1 (focused)
└── v_tiles
├── window2
└── window3
Ich wusste nicht einmal, dass man in sway Fenster per Drag-and-drop verschieben kann. Ich wähle das Fenster aus, das ich teilen möchte, setze mit
Command + veinen vertikalen Split und erstelle dann ein neues Fenster, meist ein Terminal.Oder ich verschiebe Fenster mit
Command + Shift + [hjkl].Ich will es ausprobieren, um zu sehen, ob mein Hauptproblem zuerst gelöst wird. Ich suche nach einer halbwegs brauchbaren Möglichkeit, auf dem Mac Bildschirmanordnungen zu merken.
Jedes Mal nach dem Aufwachen nach dem Booten ist mein Desktop mit drei Bildschirmen völlig amnesisch.
Idealerweise würde ich gern meine Workspaces selbst verwalten und entweder nur den Laptop-Bildschirm nutzen oder an unterschiedlichen Schreibtischen im Büro/zu Hause zwei bis drei externe Monitore verwenden können.
Ich nutze Spectacle, aber das wird nicht mehr unterstützt.
Das hier habe ich nicht ausprobiert, aber ich nutze yabai, und es verhält sich genau so, wie beschrieben.
Sehr interessant, dass man
SIPnicht deaktivieren muss. Praktisch alle ähnlichen Fenstermanager verlangen eine Deaktivierung von SIP, was mich bisher zögern ließ.Ich frage mich, was AeroSpace anders macht, damit es zusammen mit SIP funktioniert.
Aus dem README:
AeroSpace verlangt nicht, SIP (System Integrity Protection) zu deaktivieren. yabai etwa erfordert für einige Funktionen, dass SIP ausgeschaltet wird. AeroSpace findet entweder einen anderen Weg, emuliert zum Beispiel Workspaces, oder implementiert die betreffende Funktion gar nicht. Fenstertransparenz und Fensterschatten sind keine praktischen Funktionen.
Allerdings gefällt mir yabais Focus-follows-mouse-Funktion enorm, daher frage ich mich, ob es möglich ist, AeroSpace für die i3-ähnlichen Funktionen zu nutzen und yabai nur für diese eine Funktion.
Großartig. Bisher habe ich Amethyst verwendet, aber AeroSpace gefiel mir sofort besser.
Mein größter Kritikpunkt an Amethyst ist, dass es Fenster sehr träge und unzuverlässig hin- und herwirft. In AeroSpace wechseln Fenster blitzschnell auf andere Workspaces/Monitore und scheitern dabei nicht.
Mir gefällt auch, dass es die eingebauten macOS-Workspaces komplett hinter sich lässt und eigene virtuelle Workspaces verwendet. Wie der Autor sagt, ist der eingebaute Ansatz ziemlich unbefriedigend, und diese Methode macht Multi-Monitor-Setups erträglich und sogar ein wenig angenehm.
Auf meinem Arbeitsrechner konnte ich yabai nicht nutzen, weil dafür SIP deaktiviert werden müsste; der AeroSpace-Autor spricht sich ausdrücklich dagegen aus, und diese Entscheidung wirkt vernünftig.
Zu Linux-Zeiten bin ich von i3 zu xmonad gewechselt, aber unter macOS fühlt sich AeroSpace eindeutig besser an. Alle drei Fenstermanager unter macOS reichen nicht an echte Fenstermanager unter Linux heran, aber AeroSpace scheint innerhalb des Möglichen ziemlich nahe am Optimum zu sein.
Mir gefällt der Ansatz mit Fake Spaces.
Ich hatte schon einmal überlegt, Fenster zu minimieren, um etwas Ähnliches zu erreichen, habe es aber nie tatsächlich gemacht.
Unter macOS kann Tiling wegen fehlender APIs nur deprimierend sein. Trotzdem dürfte dieser Ansatz wahrscheinlich der leistungsfähigste sein.
yabai habe ich ausprobiert, aber nur für das Verschieben von Fenstern und Focus-follows-mouse, nicht fürs Tiling. Das lag an der Instabilität und ist nicht yabai anzulasten.
Danke an nikitabobko.
Jetzt muss ich nur noch herausfinden, wie man alt-tab dazu bringt, Fenster in allen Fake-Workspaces zu ignorieren, die in einer Ecke gesammelt sind, dann probiere ich es sofort aus.
Das in der Dokumentation verlinkte JankyBorders ist auch gut.
https://github.com/koekeishiya/yabai
https://github.com/lwouis/alt-tab-macos
https://github.com/FelixKratz/JankyBorders
alt+h/alt+jzwischen Fenstern wechsle.Command+Tabist der globale Fensterwechsel, die obigen Shortcuts sind für den lokalen Wechsel im Kontext eines Workspaces gedacht.Ich habe mich einigermaßen an Raycasts Fensterverwaltung gewöhnt, aber mit AeroSpace lässt sie sich praktisch kaum zusammen nutzen.
In Raycast kann man zum Beispiel mit der Option
reasonable sizeein Fenster in passender Größe öffnen und zentrieren. Man kann Splits für linke/rechte Hälfte erstellen, maximieren oder Quadranten/Drittel verwenden.In AeroSpace funktioniert es jedoch nicht, ein Fenster innerhalb eines Tiles in die linke Hälfte, rechte Hälfte oder linken zwei Drittel zu verschieben oder es mit
reasonable sizefloaten zu lassen.Außerdem gibt es einen Bug, wenn man Apps mit „next desktop“ und „previous desktop“ verschiebt. AeroSpace scheint die mehreren Desktops des Mac als eigene Workspaces zu implementieren; der Video-Guide zeigt also eigentlich keinen Wechsel zwischen verschiedenen Desktops, sondern zwischen verschiedenen Workspaces
Dadurch geht das Tiling komplett kaputt, wenn man „next desktop“ und „previous desktop“ nutzt. Schade: Wenn Workspaces direkt mit den jeweiligen Mac-Desktops verbunden wären und ein Workspace-Wechsel damit einem Desktop-Wechsel entspräche, wäre es wohl bis zu einem gewissen Grad auch mit Raycast und den Standardfunktionen von macOS kompatibel gewesen
Raycast ist wirklich gut
Ich glaube, es wird sich künftig bei Mac-Power-Usern fast wie eine Standard-App etablieren
Es hat so viele nützliche Funktionen, dass ich mich richtig damit beschäftigen sollte. Ich nutze die Linear.app-Integration am häufigsten
Ich habe yabai auf meinem Arbeitsrechner über die letzten fünf macOS-Versionen hinweg ziemlich intensiv genutzt, ohne SIP zu deaktivieren
Es gefällt mir wirklich sehr, und das Tiling wird nur ungefähr alle paar Tage instabil. Obwohl ich mindestens einmal pro Minute einen yabai-Befehl ausführe, habe ich
yabai --restart-serviceauf ein Tastenkürzel gelegt; danach läuft es immer sofort wiederDaher empfinde ich es als ziemlich stabil und großartig. Multi-Monitor-Setups sind schwierig und ich nutze sie nicht viel, aber Stacks und die schnelle „Vollbild“-artige Minimierung sind wirklich gut
Bei manchen Versions-Upgrades stuft der Firmen-Antivirus es als Virus ein und deaktiviert es für 24 Stunden; an solchen Tagen fühlt sich die Nutzung des Computers so träge und deprimierend an, dass ich ihn gar nicht benutzen möchte
Ich nutze es seit ein paar Monaten. i3 ist fast perfekt und AeroSpace ist ein guter Versuch, aber es ist noch ziemlich weit von i3 entfernt und recht instabil
Vermutlich liegt das daran, dass Mac OS X keine vollständige Kontrolle wie ein Unix-Window-Manager erlaubt
Trotzdem habe ich noch nichts Besseres gefunden. Sobald Linux auf Apple Silicon gut läuft, werde ich es installieren. Zumindest für mich ist i3 allein schon Grund genug, Linux zu nutzen, und Mac OS X ist in Sachen Window-Manager wirklich schlecht
Ich habe in einem Hobbyprojekt ein wenig in einem ähnlichen Bereich herumprobiert; der Grund sind die eingeschränkten offiziellen APIs
Am Ende ist man stark auf undokumentierte private APIs und Hacks angewiesen. Diese sind intern gedacht und daher instabil, und das Betriebssystem selbst ist auch nicht dafür ausgelegt, gut mit Situationen zusammenzuarbeiten, in denen stark in Fenster- und Prozessverwaltung eingegriffen wird. Deshalb treten sich Betriebssystem und Drittanbieter-Apps häufig gegenseitig auf die Füße
Ich habe dasselbe Problem. Ich habe noch keinen Window-Manager gefunden, der den nativen Vollbildmodus von OSX richtig handhabt
AeroSpace kommt durcheinander, wenn man natives Vollbild verwendet. Es weiß nicht, worauf der Fokus liegen soll
Bei mir:
Workspace 1: terminal
Workspace 2: slack app
Open chrome in native full screen
Wenn man jetzt zu Workspace 1 wechselt, tritt das Problem auf
Ich werde es vorerst weiter ohne Apps im nativen Vollbild nutzen. Ich hoffe, dass es dann besser funktioniert
Mich interessiert, wie sich die User Experience dieses Produkts von der von Yabai unterscheidet. Das SIP-Problem bei Yabai halte ich nicht für ein großes Thema. Unter den Yabai-Nutzern, die ich kenne, deaktiviert niemand SIP, und alle scheinen gut damit klarzukommen
Ich frage mich, ob der Unterschied im i3-Stil liegt
Persönlich nutze ich ein Utility, mit dem man wie bei Fluxbox bei gedrückter Modifikatortasten-Kombination Fenster von jeder Position aus mit der Maus skalieren und verschieben kann. Es ist nicht automatisiert, aber auch nicht instabil. Statt zu einem vollständig verwalteten Ansatz zu wechseln, geht es eher darum, Floating deutlich einfacher zu machen, indem Mausbewegungen reduziert werden
Ich habe beide ausgiebig genutzt, und mir gefällt AeroSpace besser
Ausschlaggebend ist für mich die Multi-Monitor-Unterstützung, daneben gibt es noch kleinere Vorteile
Wenn man in Yabai einen Workspace auf einen neuen Monitor verschiebt, ändert sich die ID, sodass man ihn nicht mehr zuverlässig per Tastenkürzel erreichen kann.
alt+2bricht, weil es nicht mehr Workspace 2 ist, sondern 11 oder irgendeine andere Nummer. In AeroSpace kann man Workspaces mitalt+mundalt+shift+meinfach zwischen Monitoren verschiebenEine weitere Funktion ist, dass Fenster ohne Mission-Control-Animation sofort andocken. Das hat mich wirklich massiv gestört
Diese beiden Funktionen brauche ich fast täglich, und wegen der schlechten Workspace-Unterstützung ist Yabai für mich nahezu unbenutzbar
Wenn man in Yabai Spaces auf irgendeine Weise verwalten, die Stapelreihenfolge von Fenstern ändern oder viele andere Funktionen nutzen will, muss man SIP deaktivieren [0]
Wenn man diese Funktionen nicht nutzt, ist das eine individuelle Entscheidung, aber für viele Nutzer sind sie Kernfunktionen
[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
Mich würde interessieren, was der Unterschied zu Amethyst ist. Amethyst ist in letzter Zeit deutlich stabiler geworden, und ich nutze es gern
Die textbasierte Konfiguration wirkt auf den ersten Blick ziemlich gut, aber ich bin mir nicht sicher, ob sich ein Wechsel lohnt
Ich habe bisher Amethyst genutzt, aber AeroSpace hat mir sofort besser gefallen
Was mich an Amethyst am meisten stört, ist, dass es Fenster sehr träge und unzuverlässig hin- und herwirft. In AeroSpace wechseln Fenster blitzschnell auf andere Workspaces/Monitore und schlagen dabei nicht fehl
Mir gefällt auch, dass es die eingebauten Workspaces von macOS komplett aufgibt und eigene virtuelle Workspaces nutzt. Dadurch wird ein Multi-Monitor-Setup erträglich und sogar ein bisschen angenehm
Zu Linux-Zeiten bin ich von i3 zu xmonad gewechselt, aber unter macOS fühlt sich AeroSpace eindeutig besser an. Alle drei Window-Manager unter macOS kommen nicht an echte Window-Manager unter Linux heran, aber AeroSpace scheint innerhalb der Möglichkeiten ziemlich nahe am Optimum zu sein
Nach meiner Erfahrung ist AeroSpace in den meisten Punkten deutlich besser
Es gibt ein paar seltsame Dinge, und ich muss noch einige Bug-Reports einreichen, aber es hat macOS für mich viel erträglicher gemacht als Amethyst
Auch in Amethyst kann man eine textbasierte Konfiguration nutzen
https://github.com/ianyh/Amethyst/blob/development/docs/conf...
Ich nutze das seit einigen Monaten und bin insgesamt zufrieden damit. Mir gefällt, dass alles über eine einzelne Datei konfiguriert wird, also ohne GUI.
Ein Problem ist, dass AeroSpace, wenn eine App die nativen Mac-Tabs verwendet, jeden Tab als Fenster behandelt, wodurch die Vollbildfunktion komplett kaputtgeht. Alacritty ist ein Beispiel dafür, und das ist ziemlich merkwürdig.
Dazu gibt es ein offenes Issue:
https://github.com/nikitabobko/AeroSpace/issues/68