Cet article accompagne la Vidéo Youtube de ma chaîne.
Je ne sais pas pour vous, mais personnellement je n’en peux plus des fenêtres d’applications qui se superposent, celles que l’on cherche vainement ou qu’il faut redimensionner (au cas où une fenêtre en cacherai une autre).
Yabai fournit une solution en organisant automatiquement les fenêtres en mosaïque sur MacOS X : inutile de les chercher, elles sont sous vos yeux. Yabai fait parti de mon flux de travail et me fait gagner du temps.
Mission Control
Mission Control permet de créer plusieurs bureaux virtuels (ou “Spaces”). Totalement indispensable si l’on souhaite organiser son espace de travail par thème ou selon les applications que l’on utilise.
J’utilise quotidiennement 7 bureaux virtuels :
- Bureau 1 : Dédié au développement (avec Néovim) et à l’utilisation du terminal Ghostty ;
- Bureau 2 : utilisé pour gérer mes e-mails ;
- Bureau 3 : espace un peu fourre tout ;
- Bureau 4 : utilisé pour l’application Obsidian ;
- Bureau 5 : pour les applications de traitement d’images ;
- Bureau 6 : Firefox ;
- Bureau 7 : Mullvad Browser ;
Yabai (aidé par l’utilitaire skhd) tire pleinement parti de cette organisation. Par exemple on peut indiquer à Yabai de toujours ouvrir une fenêtre d’application dans un bureau spécifique.
Ainsi, peu importe le bureau dans lequel je me trouve, lorsque - par exemple - je lance le terminal il va s’ouvrir systématiquement dans le bureau 1.
Yabai permet aussi de déplacer aisément des fenêtres d’un bureau à un autre.
La création de bureaux virtuels est une fonctionnalité intégrée à MacOS. Vous pouvez suivre la manoeuvre sur ma vidéo.
Réglages Systèmes Bureau et Dock
Pour que Yabai se sente à l’aise, il est nécessaire d’effectuer quelques clicks dans les Réglages Système Bureau et Dock :
- Dans la partie Bureau et Stage Manager, choisir
Uniquement dans Stage Managerpour l’optionCliquer sur le fond d'écran pour afficher le bureau. - Dans la partie Mission Control : désactiver
Réarranger automatiquement les Spaces en foncton de votre utilisation la plus récente.
Installation de Yabai
Vous pouvez installer Yabai via le gestionnaire de paquets homebrew… gestionnaire qu’il faut d’abord installer. Dans un terminal copier cette ligne :
/bin/bash -c "\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Et suivez les instructions. Une fois homebrew installé nous allons l’utiliser pour installer Yabai :
brew install koekeishiya/formulae/yabai Profitons en pour installer skhd : cet utilitaire permet de définir des raccourcis clavier qui intéragissent avec Yabai :
brew install koekeishiya/formulae/skhd Désactiver SIP ?
Avant de continuer, il faut que l’on discute de SIP : le System Integrity Protection de MacOS. SIP est une fonction de sécurité de MacOS qui limite la modification indésirable de fichiers système essentiels. Quel rapport avec Yabai ? Pour profiter de certaines fonctions de Yabai il est nécessaire de désactiver partiellement SIP. En désactivant SIP Yabai vous permettra d’appliquer quelques raffinements supplémentaires : supprimer les ombres des fenêtres, modifier leur transparance, permettre l’affichage d’une application sur tous les bureaux etc. etc. À vous de voir : Yabai reste fonctionnel sans désactiver SIP. Si vous désactivez SIP il vous faudra en plus exécuter cette commande :
echo "\$(whoami) ALL=(root) NOPASSWD: sha256:\$(shasum -a 256 \$(which yabai) | cut -d " " -f 1) \$(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai Démarrage de yabai
On peut maintenant lancer Yabai et skhd :
yabai --start-service
skhd --start-service MacOS va vous demander d’activer les permissions pour ces deux services. Une fois fait… rien ne semble avoir changé à ce stade. Et c’est normal : il faut créer des fichiers de configuration pour ces deux outils.
Configuration de Yabai
Par défaut le comportement de Yabai va dépendre du fichier de paramètres situé dans ce chemin ~/.config/yabai/yabairc. Il faut donc :
# Créer le répertoire yabai
cd ~/.config
mkdir yabai
# Créer le fichier yabairc
cd yabai
touch yabairc
# Rendre le fichier exécutable
chmod +x yabairc Ci-dessous un exemple de contenu du fichier yabairc:
# Si vous avez désactivé SIP, veuillez ajouter les deux lignes suivantes
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
sudo yabai --load-sa
# Configuration de base : on utilise le layout 'bsp' (binary space partionning).
# Cela signifie que lorsque une fenêtre est ajoutée à la mosaïque,
# l'espace disponible est divisé en deux.
yabai -m config layout bsp
# Positionnement des fenêtres :
# second_child : toute nouvelle fenêtre sera située
# à droite de l'axe vertical de la fenêtre existante
# ou sous l'axe horizontal.
yabai -m config window_placement second_child
# Espace (en pixel) entre les fenêtres et aussi le bord de l'écran
yabai -m config top_padding 12
yabai -m config bottom_padding 12
yabai -m config left_padding 12
yabai -m config right_padding 12
yabai -m config window_gap 12
# Configuration des actions avec la souris
# 1- Lorsqu'une fenêtre obient le focus,
# le pointeur de la souris suis la fenêtre (tip top).
yabai -m config mouse_follows_focus on
# 2- Utilisation de la souris avec la touche alt :
yabai -m config mouse_modifier alt
# click gauche + drag : on bouge la fenêtre
yabai -m config mouse_action1 move
# click droit + drag : on modifie la taille de la fenêtre
yabai -m config mouse_action2 resize
# 3- swap des fenêtres
yabai -m mouse_drop_action swap
# Règles qui indiquent à Yabai de ne pas prendre
# en charge certaines applications
# ces fenêtres seront flottantes
yabai -m rule --add app="^Réglages Système\$" manage=off
yabai -m rule --add app="^Calculette\$" manage=off
# Autres règles : attribution automatique d'un bureau (space)
# à certaines applications
yabai -m rule --add app="^Ghostty\$" space=1
yabai -m rule --add app="^Obsidian\$" space=4
yabai -m rule --add app="^Firefox\$" space=6
Exécuter un redémarrage de Yabai :
yabai --restart_service Configuration de skhd
Les paramètres de configuration de skhd permettent de créer des raccourcis clavier agissant sur Yabai.
Créons d’abord, comme pour Yabai, un fichier de configuration :
# Répertoire du fichier de config
cd ~/.config
mkdir skhd
cd skhd
touch skhdrc
# Rendons le fichier exécutable
chmod +x skhdrc Voici un exemple de contenu du fichier de configuration :
# changement du focus d'une fenêtre dans un bureau
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - h : yabai -m window --focus west
alt - l : yabai -m window --focus east
# Redimenssione les fenêtres à leur dimension initial
shift + alt - e : yabai -m space --balance
# Transfert d'une fenêtre vers un bureau (space)
# Utilisation d'un keycode (0xnn).
# Le keycode peut être obtenu en utilisant skhd -o
# - lshift = touche 'shift' à gauche (left) du clavier
# - lalt = touche 'alt' à gauche (left) du clavier
lshift + lalt - 0x12 : yabai -m window --space 1;
lshift + lalt - 0x13 : yabai -m window --space 2;
lshift + lalt - 0x14 : yabai -m window --space 3;
lshift + lalt - 0x15 : yabai -m window --space 4;
lshift + lalt - 0x17 : yabai -m window --space 5;
lshift + lalt - 0x16 : yabai -m window --space 6;
lshift + lalt - 0x1A : yabai -m window --space 7; Il n’est pas nécessaire de redémarrer skhd lors des modification du fichier de configuration. Si besoin cela se fait par la commande :
skhd --restart_service Desinstallation
Que serait un guide d’installation sans procédure de désinstallation ? Suivez les commandes ci-dessous si vous souhaitez désinstaller Yabai et skhd :
# stop yabai et skhd
yabai --stop-service
skhd --stop-service
# Suppression des fichiers de service
yabai --uninstall-service
skhd --uninstall-service
# désinstallation du script addition
sudo yabai --uninstall-sa
# Désinstallation de yabai et skhd
brew uninstall yabai
brew uninstall skhd
# Suppression des fichiers log
rm -rf /tmp/yabai_\$USER.out.log
rm -rf /tmp/yabai_\$USER.err.log
# Suppresion du reste des fichiers
# Faites gaffe au deux premières commandes !
rm -rf ~/.config/yabai
rm -rf ~/.config/skhd
rm /tmp/yabai_\$USER.lock
rm /tmp/yabai_\$USER.socket
rm /tmp/yabai-sa_\$USER.socket
# Redémarrage du dock
killall dock Conclusion
Yabai, en organisant automatiquement les fenêtres de MacOS en mosaïque, offre une perspective intéressante pour son flux de travail. Nous n’avons vu qu’une petite partie des fonctions disponibles mais cet outil permet bien plus encore.
