- AeroSpace est un gestionnaire de fenêtres en mosaïque en bêta pour macOS, offrant une utilisation proche d’i3, avec une disposition arborescente et un workflow centré sur le clavier
- Il ne dépend pas des Spaces natifs de macOS et utilise sa propre émulation d’espaces de travail virtuels ; il met en avant des changements rapides d’espace de travail sans animation et un fonctionnement sans désactiver SIP
- La configuration repose sur du TOML en texte brut, avec une conception orientée CLI ; il inclut des manpages et l’autocomplétion shell, et prend en charge le multi-écran selon un paradigme proche d’i3
- Actuellement en Public Beta, il peut être utilisé au quotidien, mais des breaking changes sont à prévoir avant la version 1.0 ; avant celle-ci, il reste notamment de grands refactorings, des combinateurs de style shell et l’étude d’une API de raccourcis globaux
- Les valeurs du projet privilégient les utilisateurs avancés et développeurs, l’usage au clavier, les fonctionnalités pratiques et une maintenance centrée sur les API d’accessibilité publiques ; la configuration GUI, l’intégration harmonieuse avec macOS Spaces et le ricing sont peu prioritaires
L’environnement de tiling macOS proposé par AeroSpace
- AeroSpace est un gestionnaire de fenêtres en mosaïque façon i3 pour macOS
- Des démos et de la documentation sont fournies séparément
Fonctionnalités clés et conception
- La disposition des fenêtres est organisée comme un gestionnaire de fenêtres en mosaïque fondé sur un paradigme arborescent
- L’expérience utilisateur s’inspire de i3
- Le changement d’espace de travail est rapide et sans animation, et ne nécessite pas de désactiver SIP
- Les Spaces natifs de macOS étant fortement limités, AeroSpace ne les utilise pas et émule ses propres espaces de travail virtuels
- La configuration est en texte brut, adaptée aux dotfiles ; un exemple de configuration par défaut est disponible dans default-config.toml
- La conception est orientée CLI et inclut des manpages ainsi que l’autocomplétion shell
- Le multi-écran est pris en charge selon un paradigme proche d’i3
Installation et conditions liées à la sécurité
- Le mode d’installation recommandé est Homebrew cask, avec mises à jour automatiques possibles
brew install --cask nikitabobko/tap/aerospace
- En environnement multi-écran, il faut vérifier que les moniteurs sont correctement disposés
- Les autres méthodes d’installation figurent dans le guide d’installation
- AeroSpace n’est pas notarized
- Le script d’installation Homebrew est configuré pour supprimer automatiquement l’attribut
com.apple.quarantine
- Grâce à cette configuration, l’application devrait fonctionner directement, sans avertissement “Apple cannot check AeroSpace for malicious software”
État du projet et travaux avant la 1.0
- L’état actuel est Public Beta
- L’usage quotidien est possible, mais il faut s’attendre à des breaking changes avant l’arrivée de la 1.0
- Les travaux suivants restent à faire avant de pouvoir publier la 1.0
- Problèmes de performance : le travail consistant à implémenter un thread par application pour contourner l’API AX bloquante de macOS est terminé
- Grand refactoring : réécrire la structure de données mutable doublement chaînée du core tree en un arbre persistant immuable simplement chaîné
- Important pour la stabilité et les performances potentielles
- Aide à corriger un problème de stabilité où une fenêtre peut être déplacée aléatoirement vers l’espace de travail focalisé
- Aide à la prise en charge des onglets natifs de macOS
- Implémentation de combinateurs de style shell
- L’approche minimale la plus probable consiste à introduire
||, &&, ; et une commande eval permettant d’envoyer plusieurs commandes en une seule fois
- Étudier la possibilité d’utiliser l’API
CGEvent.tapCreate pour les raccourcis globaux
- Il pourrait être possible, ou non, de distinguer les modificateurs gauche et droit
- Parmi les gros sujets prévus après la 1.0 figurent les sticky windows et le Dynamic TWM
Valeurs du projet et non-objectifs
- AeroSpace cible les utilisateurs avancés et les développeurs
- Il vise un usage centré sur le clavier
- Les breaking changes dans les fichiers de configuration, la CLI et le comportement sont évités autant que possible, mais des breaking changes réfléchis peuvent survenir afin d’éviter la stagnation du logiciel
- Après la 1.0, il est garanti qu’un breaking change entraînera une montée de version majeure selon Semver
- Avant la 1.0, des breaking changes peuvent simplement survenir
- L’interface graphique n’est pas utilisée sauf nécessité
- Il n’est pas prévu de fournir une GUI de configuration
- Une icône dans le menu d’état pour le retour visuel est autorisée
- Les fonctionnalités sont jugées selon leur utilité pratique ; les fonctions d’apparence comme les bordures de fenêtres, la transparence ou les animations ne sont pas considérées comme pratiques
- La “dark magic” comme les API privées ou l’injection de code est évitée autant que possible
- Actuellement, une seule API privée,
_AXUIElementGetWindow, est utilisée pour obtenir le window ID d’un objet d’accessibilité
- Pour le reste, AeroSpace utilise les API d’accessibilité publiques de macOS
- Il ne demande pas de désactiver SIP
- L’objectif est une configuration robuste face aux mises à jour de macOS et facile à maintenir
- Bien s’intégrer aux fonctionnalités existantes de macOS n’est pas un objectif
- AeroSpace ne tient pas compte de l’existence de macOS Spaces et utilise sa propre émulation d’espaces de travail
- Le ricing est peu prioritaire
- Seuls les gaps et quelques callbacks pour l’intégration d’une barre sont pris en charge au minimum
- Le maintainer actuel ne s’intéresse pas au ricing, et les issues liées sont pour la plupart peu prioritaires ou ignorées
- Si davantage de maintainers arrivent, la position sur le ricing pourrait changer
Compatibilité, communauté et projets liés
- La compatibilité macOS dépend du mode de build
- Exécution du binaire AeroSpace : macOS 13+
- Debug build depuis les sources : macOS 14+
- Release build depuis les sources : macOS 15+, Xcode 26+ requis
- Les issues ne sont pas acceptées directement ; il est demandé de créer d’abord une Discussion
- GitHub Discussions comprend des canaux pour l’ensemble, les annonces, les annonces de release, les idées de fonctionnalités, le général, les bugs potentiels, ainsi que les questions-réponses
- Les projets liés indiqués sont les suivants
- Amethyst : gestionnaire de fenêtres en mosaïque façon xmonad
- InstantSpaceSwitcher : changement instantané de space par synthèse de gestes de trackpad artificiellement très rapides
- yabai : gestionnaire de fenêtres en mosaïque pour macOS fondé sur le binary space partitioning
1 commentaires
Avis sur Hacker News
Je l’utilise tous les jours, et ma conclusion est que c’est la meilleure façon de gérer les fenêtres sur Mac, mais que ça reste en dessous d’i3/sway
En particulier, la prise en charge du déplacement des fenêtres les unes par rapport aux autres est très limitée, donc on ne peut pas créer de nouvelles divisions verticales/horizontales comme avec sway. Du coup, pour obtenir l’agencement de fenêtres voulu, il faut le plus souvent contourner le problème avec des commandes clavier un peu maladroites
Par exemple, quand on a deux fenêtres côte à côte et qu’on veut diviser verticalement l’un des côtés, avec sway il suffit d’ouvrir une nouvelle fenêtre et de la déposer sur la moitié supérieure/inférieure de la fenêtre existante. Avec AeroSpace, la meilleure méthode que j’aie trouvée consistait à ouvrir une nouvelle fenêtre, à convertir les trois fenêtres en une pile verticale, puis à mettre le focus sur la fenêtre qui se trouvait à gauche au départ et à exécuter
move leftSi la normalisation (normalization) est activée, il n’est pas nécessaire de “passer en pile verticale”
Dans cet agencement :
h_tiles
├── window1 (focused)
├── window2
└── window3
exécuter
move leftdonne ceci :h_tiles
├── window1 (focused)
└── v_tiles
├── window2
└── window3
Je ne savais même pas qu’on pouvait glisser-déposer des fenêtres dans sway. Moi, je sélectionne la fenêtre que je veux diviser, puis je définis une division verticale avec
Command + vet je crée une nouvelle fenêtre, généralement un terminalSinon, je déplace les fenêtres avec
Command + Shift + [hjkl]Je compte l’essayer pour voir si mon principal problème est d’abord résolu. Je cherche un moyen crédible de mémoriser la disposition des écrans sur Mac
À chaque réveil après démarrage, mon bureau avec 3 écrans se retrouve complètement amnésique
Idéalement, j’aimerais gérer moi-même mes espaces de travail, et pouvoir utiliser seulement l’écran du portable ou 2 à 3 moniteurs externes sur des bureaux différents au travail/à la maison
J’utilise Spectacle, mais il n’est plus maintenu
Je n’ai pas essayé celui-ci, mais j’utilise yabai, et il fonctionne exactement de la manière décrite
Le fait qu’il ne soit pas nécessaire de désactiver
SIPest très intéressant. Pratiquement tous les gestionnaires de fenêtres similaires exigent de désactiver SIP, ce qui me faisait hésiterJe me demande ce qu’AeroSpace fait différemment pour pouvoir fonctionner avec SIP
Ce que j’ai trouvé dans le README :
AeroSpace ne demande pas de désactiver SIP (System Integrity Protection). Par exemple, yabai exige de désactiver SIP pour utiliser certaines fonctionnalités. AeroSpace trouve une autre approche, par exemple en émulant les espaces de travail, ou alors n’implémente tout simplement pas la fonctionnalité concernée. La transparence et les ombres des fenêtres ne sont pas des fonctionnalités pratiques
Cela dit, j’adorais vraiment la fonctionnalité de yabai où le focus suit la souris, et je me demande s’il serait possible de confier à AeroSpace les fonctions façon i3 tout en utilisant yabai uniquement pour cette fonctionnalité
Excellent. J’utilisais Amethyst jusqu’ici, mais AeroSpace m’a tout de suite davantage plu
Ce qui me déplaît le plus dans Amethyst, c’est qu’il lance les fenêtres de manière très lente et instable. Avec AeroSpace, les fenêtres se déplacent instantanément vers un autre espace de travail/moniteur et ça n’échoue pas
J’aime aussi le fait qu’il abandonne complètement les espaces de travail intégrés à macOS pour utiliser ses propres espaces de travail virtuels. Comme le dit l’auteur, l’approche intégrée est assez insatisfaisante, et cette méthode rend une configuration multi-écrans supportable, voire un peu agréable à gérer
Sur mon ordinateur de travail, je ne pouvais pas utiliser yabai parce qu’il fallait désactiver SIP ; l’auteur d’AeroSpace s’y oppose explicitement, et ce choix me paraît raisonnable
À l’époque où j’utilisais Linux, j’étais passé d’i3 à xmonad, mais sur macOS, AeroSpace me semble clairement meilleur. Les trois gestionnaires de fenêtres de macOS restent en dessous de vrais gestionnaires de fenêtres sous Linux, mais AeroSpace paraît proche du mieux possible dans les limites du système
J’aime l’approche des faux Spaces
J’avais déjà pensé à minimiser les fenêtres pour obtenir quelque chose de similaire, mais je ne l’avais jamais fait en pratique
Sur macOS, le tiling est forcément frustrant à cause du manque d’API. Malgré tout, cette approche est probablement la plus performante
J’ai essayé yabai, mais je ne l’utilisais que pour déplacer les fenêtres et pour le focus qui suit la souris, pas pour le tiling. C’était instable, et ce n’était pas la faute de yabai
Merci à nikitabobko
Il ne me reste plus qu’à trouver comment faire en sorte qu’alt-tab ignore les fenêtres de tous les faux espaces de travail regroupées dans un coin, et je l’essaierai tout de suite
JankyBorders, lié dans la documentation, est bien aussi
https://github.com/koekeishiya/yabai
https://github.com/lwouis/alt-tab-macos
https://github.com/FelixKratz/JankyBorders
alt+h/alt+jCommand+Tabest un changement de fenêtre global, tandis que les raccourcis ci-dessus servent au changement local dans le contexte de l’espace de travailJe me suis assez habitué aux outils de gestion de fenêtres de Raycast, mais ils sont en pratique difficiles à utiliser avec AeroSpace
Par exemple, dans Raycast, l’option
reasonable sizepermet d’afficher une fenêtre à une taille appropriée et de la centrer. On peut aussi créer une division moitié gauche/moitié droite, maximiser, ou faire des quadrants/des tiersMais dans AeroSpace, essayer de déplacer une fenêtre dans une tuile vers la moitié gauche, la moitié droite, les 2/3 gauches, ou de la mettre en flottant avec
reasonable size, ne fonctionne pasIl y a aussi un bug quand on déplace une app vers le « next desktop » ou le « previous desktop ». AeroSpace semble implémenter les différents bureaux du Mac sous forme de ses propres espaces de travail, donc le guide vidéo montre en réalité le passage d’un espace de travail à un autre, et non le passage entre des bureaux différents
Résultat : utiliser « next desktop » et « previous desktop » casse complètement le tiling. C’est dommage : si les espaces de travail étaient directement reliés à chaque bureau du Mac, de sorte que changer d’espace de travail revienne à changer de bureau, cela aurait été plus ou moins compatible avec Raycast et les fonctions macOS natives
Raycast est vraiment excellent
Je pense qu’il va s’imposer comme une app standard chez les power users Mac
Il y a tellement de fonctions utiles que je vais devoir vraiment creuser. Pour ma part, j’utilise surtout l’intégration Linear.app
Sur les cinq dernières versions de macOS, j’ai beaucoup utilisé yabai sur mon ordinateur de travail sans désactiver SIP
Je l’aime vraiment beaucoup, et le tiling ne devient instable qu’une fois tous les quelques jours environ. J’exécute pourtant une commande yabai au moins une fois par minute, donc j’ai associé
yabai --restart-serviceà un raccourci clavier ; quand je le lance, ça repart toujours immédiatementJe trouve donc que c’est assez stable et excellent. Le multi-écran est difficile et je ne l’utilise pas beaucoup, mais les piles et la minimisation rapide façon « plein écran » sont vraiment très bien
Lors de certaines mises à niveau de version, l’antivirus de l’entreprise le signale comme un virus et le désactive pendant 24 heures ; ces jours-là, l’ordinateur paraît tellement lourd et déprimant à utiliser que je n’ai plus envie de m’en servir
Je l’utilise depuis quelques mois. i3 est presque parfait et AeroSpace est une bonne tentative, mais il reste assez loin d’i3 et il est franchement instable
C’est probablement parce que Mac OS X ne permet pas un contrôle complet comme un gestionnaire de fenêtres Unix
Malgré tout, je n’ai encore rien trouvé de mieux. Quand Linux tournera bien sur Apple Silicon, je l’installerai. Au moins pour moi, i3 à lui seul est une raison suffisante d’utiliser Linux, et Mac OS X est vraiment mauvais côté gestionnaire de fenêtres
J’ai un peu touché à ce domaine dans un projet perso, et c’est dû aux limites des API officielles
Au final, on dépend beaucoup d’API privées non documentées et de bidouilles. Comme elles sont destinées à un usage interne, elles sont instables, et l’OS lui-même n’est pas conçu pour coopérer correctement dans des situations où l’on interfère beaucoup avec la gestion des fenêtres/processus. Résultat, l’OS et les apps tierces se marchent souvent sur les pieds
J’ai le même problème. Je n’ai pas encore trouvé de gestionnaire de fenêtres qui gère correctement le mode plein écran natif d’OSX
AeroSpace perd ses repères quand on utilise le plein écran natif. Il ne sait plus très bien où placer le focus
Dans mon cas :
Workspace 1: terminal
Workspace 2: slack app
Open chrome in native full screen
Maintenant, si je passe au workspace 1, le problème apparaît
Je compte continuer à l’utiliser quelque temps sans apps en plein écran natif. J’espère que ça fonctionnera mieux comme ça
Je me demande quelle est la différence d’expérience utilisateur entre ce produit et Yabai. Le problème de SIP avec Yabai ne me paraît pas majeur. Parmi les utilisateurs de Yabai que je connais, personne ne désactive SIP, et tout le monde semble l’utiliser sans souci
Je me demande si la différence tient au style i3
Personnellement, j’utilise un utilitaire qui, comme Fluxbox, permet de redimensionner et de déplacer une fenêtre à la souris depuis n’importe quel endroit de la fenêtre en maintenant une combinaison de touches modificatrices. Ce n’est pas automatisé, mais ce n’est pas instable non plus. Plutôt que de passer à un mode entièrement géré, ça ressemble davantage à une façon de rendre le flottant beaucoup plus facile en réduisant les déplacements de souris
J’ai beaucoup utilisé les deux, et je préfère AeroSpace
Le point décisif pour moi, c’est la prise en charge du multi-écran, et il y a aussi d’autres petits avantages
Dans Yabai, quand on déplace un espace de travail vers un nouveau moniteur, son ID change, donc on ne peut plus continuer à y accéder avec les raccourcis clavier. Si
alt+2casse, c’est parce que ce n’est plus le workspace 2, mais le 11 ou un autre numéro. Avec AeroSpace, on peut facilement déplacer un espace de travail d’un moniteur à l’autre avecalt+metalt+shift+mUne autre fonction, c’est que les fenêtres s’attachent instantanément, sans animation de Mission Control. C’était quelque chose qui m’agaçait vraiment beaucoup
Ce sont les deux fonctions dont j’ai besoin presque tous les jours, et faute d’un bon support des espaces de travail, Yabai est pratiquement inutilisable pour moi
Dans Yabai, pour manipuler les Spaces d’une manière ou d’une autre, changer l’ordre d’empilement des fenêtres ou utiliser beaucoup d’autres fonctions, il faut désactiver SIP [0]
Si l’on n’utilise pas ces fonctions, c’est un choix personnel, mais pour beaucoup d’utilisateurs ce sont des fonctions essentielles
[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
Je me demande en quoi c’est différent d’Amethyst. Amethyst est devenu beaucoup plus stable récemment et je l’utilise avec plaisir
La configuration textuelle donne une assez bonne première impression, mais je ne sais pas si ça vaut le coup de changer
J’utilisais Amethyst jusqu’ici, mais AeroSpace m’a tout de suite davantage plu
Ce qui me déplaît le plus dans Amethyst, c’est qu’il envoie les fenêtres de façon très lente et instable. Dans AeroSpace, les fenêtres passent instantanément à un autre espace de travail/moniteur et ça ne rate pas
J’aime aussi le fait qu’il abandonne complètement les espaces de travail intégrés de macOS pour utiliser ses propres espaces de travail virtuels. Grâce à ça, une configuration multi-écran devient supportable, voire un peu agréable à gérer
À l’époque où j’étais sous Linux, je suis passé d’i3 à xmonad, mais sous macOS, AeroSpace me semble clairement meilleur. Les trois gestionnaires de fenêtres de macOS restent en dessous des vrais gestionnaires de fenêtres Linux, mais AeroSpace paraît être ce qui se fait de mieux dans les limites du possible
D’après mon expérience, AeroSpace est bien meilleur sur la plupart des points
Il y a quelques bizarreries et je dois encore ouvrir quelques rapports de bug, mais il a rendu macOS beaucoup plus supportable qu’Amethyst
Amethyst permet aussi une configuration textuelle
https://github.com/ianyh/Amethyst/blob/development/docs/conf...
Je l’utilise depuis quelques mois et, dans l’ensemble, il me plaît. J’aime le fait que toute la configuration se fasse dans un seul fichier, autrement dit qu’il n’y ait pas d’interface graphique
Un problème : quand une app utilise les onglets natifs de Mac, AeroSpace traite chaque onglet comme une fenêtre, ce qui casse complètement la fonction plein écran. Alacritty en est un exemple, et c’est assez étrange
Une issue liée est ouverte :
https://github.com/nikitabobko/AeroSpace/issues/68