Aujourd'hui, je vais vous parler d'Aerospace, un outil qui m'a réconcilié avec mon Macbook. Si comme moi vous galérez avec la gestion des fenêtres sur macOS, cet outil devrait vous intéresser.
00:00 Intro
00:36 Mon problème
03:41 Aerospace
05:30 Configuration
07:40 Conclusion
Ça fait maintenant plus de quinze ans que j'utilise des MacBook comme ordinateur secondaire pour travailler quand je suis en déplacement. Mais malgré toute ma bonne volonté, je n'arrive pas à me faire au gestionnaire de fenêtres de macOS.
Quand je travaille, j'ai souvent besoin d'osciller entre plusieurs applications (un éditeur, un terminal et un navigateur) et malgré plusieurs tentatives je n'arrive pas à trouver une manière efficace de le faire.
J'ai d'abord essayé d'utiliser Mission Control qui permet de passer d'une fenêtre à l'autre avec un affichage en mosqaïque, mais cette approche pose plusieurs problèmes :
Ma deuxième approche a été d'utiliser le système de bureaux virtuels pour reproduire mon organisation habituelle : un bureau pour l'éditeur, un pour le terminal et un pour le navigateur. Mais là encore, plusieurs problèmes se posent :
Vous l'aurez compris, même avec la meilleure volonté du monde, je n'arrive pas à m'organiser sur macOS, surtout sur avec l'espace limité du 13 pouces.
Avec le temps j'ai testé pas mal de solutions plus ou moins convaincantes. Mais en tombant sur une discussion reddit j'ai découvert AeroSpace, un gestionnaire de fenêtres en mosaïque pour macOS, similaire à i3.
Le premier avantage, c'est qu'il s'installe facilement avec Homebrew sans avoir besoin de désactiver le système de vérification d'intégrité du système.
Le second est qu'il utilise un système de "workspace" qui ne se repose pas sur le système de bureaux virtuel de MacOS ce qui permet de ne pas être limité par les contraintes de l'OS.
Enfin, la configuration se fait au travers d'un fichier de configuration qui permet de piloter les workspaces mais aussi les racourcis clavier et des comportements spécifiques à appliquer pour certains types d'application. Vous pouvez d'ailleurs retrouver ma configuration d'Aerospace sur github
Pour comprendre comment AeroSpace impacte ma manière de travailler voici mon organisation. En général j'utilise une application par workspace :
Je définis des règles pour que les applications soient automatiquement dans le bon workspace.
[[on-window-detected]]
if.app-id = 'com.mitchellh.ghostty'
run = ['move-node-to-workspace 2 --focus-follows-window']
[[on-window-detected]]
if.app-id = 'com.jetbrains.PhpStorm'
run = ['move-node-to-workspace 1 --focus-follows-window']
[[on-window-detected]]
if.app-id = 'com.brave.Browser'
run = ['move-node-to-workspace 3 --focus-follows-window']
[[on-window-detected]]
if.app-id = 'com.brave.Browser'
if.window-title-regex-substring = 'music'
run = ['move-node-to-workspace 8']
Pour me déplacer de workspace en workspace j'utilise les touches numériques (attention les touches sont définit en QWERTY mais fonctionne sur un clavier AZERTY).
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
cmd-1 = 'workspace 1'
cmd-2 = 'workspace 2'
cmd-3 = 'workspace 3'
# ...
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
cmd-shift-1 = 'move-node-to-workspace 1 --focus-follows-window'
cmd-shift-2 = 'move-node-to-workspace 2 --focus-follows-window'
cmd-shift-3 = 'move-node-to-workspace 3 --focus-follows-window'
# ...
Je configure aussi la position des workspace dans le cas où j'utilise plusieurs moniteurs.
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
[workspace-to-monitor-force-assignment]
1 = 'main'
2 = 'main'
3 = 'main'
4 = 'secondary'
5 = 'secondary'
6 = 'secondary'
7 = 'secondary'
8 = 'main'
9 = 'main'
Maintenant, quand je travaille je sais exactement où sont mes fenêtres et comment les atteindre. Quand je me branche à un moniteur externe, je peux rapidement naviguer d'un écran à l'autre via le numéro du Workspace.