AccueilClientsExpertisesBlogOpen SourceJobsContact

3 mai 2024

Environnement MacOS avec Yabai et SketchyBar

4 minutes de lecture

Environnement MacOS avec Yabai et SketchyBar

Après plusieurs années sur Linux, j'ai récemment décidé de repasser sur un environnement de travail MacOS. J'ai donc chercher à reconfigurer mon environnement de travail pour retrouver des méthodes similaires à l'environnement Regolith que j'apprécie particulièrement.

C'est un plaisir de retrouver la fiabilité et qualité du matériel Apple, mais la navigation très orientée sur la souris ou les "gestures" du pad ne me conviennent pas. Je souhaite retrouver :

  • un gestionnaire de fenêtre type "tiling" pour maximiser l'espace de travail
  • une navigation rapide et simple majoritairement au clavier
  • un terminal performant et personnalisable
  • des workspaces pour organiser les applications
Environnement Yabai + SketchyBar
Environnement Yabai + SketchyBar

À noter que je ne suis pas un puriste de la navigation au clavier, j'utilise la souris pour de nombreuses tâches, notamment le focus des fenêtres et les tirs de mitrailleuse sur les aliens.

Gestionnaire de fenêtre (~10 mins)

Heureusement il existe des alternatives déjà très avancées. J'ai choisi yabai qui semble le plus avancé et propose de la configuration via CLI. Amethyst est une alternative qui propose une interface graphique mais ne permet pas de contrôler les "Spaces" ou modifier les propriétés natives des fenêtres.

Pour installer Yabai il y a quelques étapes à suivre

  • installation du binaire
  • démarrage du service
  • configuration du script d'injection
  • désactivation de SIP (System Integrity Protection)

Tout est décrit en détail dans le wiki Github.

Au niveau de la configuration je suis resté très proche de celle par défaut :

~/.yabairc
#!/usr/bin/env sh

yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
sudo yabai --load-sa

# global settings
yabai -m config                                 \
    external_bar                 all:40:0        \
    menubar_opacity              1.0            \
    mouse_follows_focus          off            \
    focus_follows_mouse          off            \
    window_origin_display        default        \
    window_placement             second_child   \
    window_zoom_persist          on             \
    window_shadow                on             \
    window_animation_duration    0.0            \
    window_opacity_duration      0.0            \
    active_window_opacity        1.0            \
    normal_window_opacity        0.90           \
    window_opacity               off            \
    insert_feedback_color        0xffd75f5f     \
    split_ratio                  0.50           \
    split_type                   auto           \
    auto_balance                 off            \
    top_padding                  8             \
    bottom_padding               8             \
    left_padding                 8             \
    right_padding                8             \
    window_gap                   04             \
    layout                       bsp            \
    mouse_modifier               fn             \
    mouse_action1                move           \
    mouse_action2                resize         \
    mouse_drop_action            swap

echo "yabai configuration loaded."

Pour la navigation au clavier j'utilise skhd qui est un simple gestionnaire de raccourci clavier, que l'on peut facilement associer à des commandes yabai.

L'installation est très rapide et nécessite peu de configuration :

brew install koekeishiya/formulae/skhd
skhd --start-service

Et voici un exemple de fichier de configuration :

~/.skhdrc
# fast focus spaces
lalt - 0x12 : yabai -m space --focus 1
lalt - 0x14 : yabai -m space --focus 3
lalt - 0x13 : yabai -m space --focus 2
lalt - 0x15 : yabai -m space --focus 4

# send window to desktop
shift + ctrl - 0x12  : yabai -m window --space  1;
shift + ctrl - 0x13  : yabai -m window --space  2;
shift + ctrl - 0x14  : yabai -m window --space  3;
shift + ctrl - 0x15  : yabai -m window --space  4;
shift + ctrl - 0x17  : yabai -m window --space  5;
shift + ctrl - 0x16  : yabai -m window --space  6;

# toggle window zoom
alt - f : yabai -m window --toggle zoom-fullscreen

J'ai rencontré quelques difficultés avec le clavier français et trouver les bons noms de touches, mais l'utilisation du logiciel Key Codes m'a bien aidé.

Il est possible d'aller beaucoup plus loin dans la configuration. Pour mon retour depuis Linux je suis resté sur des raccourcis simples pour le moment et qui ne rentrent pas en conflit avec les raccourcis natifs (mes premières accolades ont été un peu fastidieuses...).

Dernière étape qui n'est pas vraiment nécessaire mais que j'ai trouvé assez cool : la barre de menu. Attention c'est ici que s'ouvre réellement la boîte de Pandore, comme en témoignent ces nombreux exemples de customisation.

SketchyBar
Je suis resté assez sobre pour ma part

SketchyBar s'installe aussi facilement avec brew :

brew tap FelixKratz/formulae
brew install sketchybar

Pour la configuration je me suis fortement inspiré de celle du développeur Felix Kratz avec :

  • workspaces et applications actives
  • indicateur de batterie
  • volume
  • date et heure
  • notifications Slack

La seule configuration que j'ai ajouté est celle de Slack avec le script suivant :

~/.config/sketchybar/plugins/slack.sh
#!/bin/bash

SLACK_INFO=$(lsappinfo info -only StatusLabel `lsappinfo find LSDisplayName=Slack`)
COUNT=${SLACK_INFO:25:1}

if [ $COUNT = "•" ]; then
  DRAWING=off
else
  DRAWING=on
fi

sketchybar --set slack drawing=$DRAWING label="Slack (${COUNT})"

et sa définition dans la configuration :

~/.config/sketchybar/sketchybarrc
slack=(
    update_freq=3
    updates=on
    icon.drawing=off
    label.font="$FONT:Bold:14.0"
    script="$PLUGIN_DIR/slack.sh"
)

sketchybar --add item slack right        \
           --set slack "${slack[@]}"  \

Conclusion

Je suis très satisfait de mon environnement de travail actuel. Certaines applications MacOS peuvent se montrer récalcitrantes, comme "System settings" en termes de tiling, mais ce sont vraiment des cas à la marge. J'ai retrouvé une bonne méthodo de travail et une navigation rapide et efficace.

Au final les seuls points gênants sont les anciennes habitudes ou les changements d'environnement sur une même journée entre MacOS, Linux et Windows (ordi à la maison).

J'avais comme projet de faire une petite animation avec un chat 🐈‍⬛ qui court sur la barre de menu à chaque fois que je fais un git push mais c'est clairement en bas de la liste des priorités.

J'espère que vous vous amuserez autant que moi à configurer votre environnement, n'hésitez pas à partager vos astuces et configurations !

18 avenue Parmentier
75011 Paris
+33 1 43 57 39 11
hello@premieroctet.com

Suivez nos aventures

GitHub
Twitter
Flux RSS

Naviguez à vue