Je partage régulièrement mon terminal favori sur ce blog. Aujourd'hui, c'est au tour de Ghostty d'avoir sa place à lui : je vous explique pourquoi il est devenu mon terminal par défaut, et comment le configurer pour en tirer le meilleur.

Ce qui m'a convaincu en premier, c'est la simplicité : dès l'installation, sans le moindre thème choisi, Ghostty affiche déjà une fenêtre parfaitement native et un rendu de texte net. Pas besoin de passer par la configuration pour obtenir un terminal agréable à l'œil. Vient ensuite la vitesse. Un terminal qui traîne pour afficher un cat sur un gros fichier, ou qui rame en sortie de git log, casse la concentration à chaque commande ; Ghostty règle ce problème à la racine, c'est un émulateur de terminal natif pour macOS qui délègue le rendu du texte au GPU (processeur graphique) plutôt qu'au CPU, contrairement à la plupart des terminaux historiques.
La différence ressemble à celle entre une voiture assemblée à partir de pièces détachées et une voiture pensée d'un seul bloc pour la piste. iTerm2 ou Terminal.app empilent des décennies de compatibilité et de plugins par-dessus une base ancienne ; Ghostty, écrit de zéro par Mitchell Hashimoto (le créateur de Vagrant et Terraform chez HashiCorp), repart d'une feuille blanche pour ne garder que l'essentiel : rapidité, thèmes, intégration shell native. Ghostty est aujourd'hui en version stable publique, distribué sous forme de binaires signés et notarisés par le projet, ce qui exclut toute bêta bricolée à installer avec méfiance.
Ghostty s'installe en une commande via Homebrew (le gestionnaire de paquets de référence sur macOS) :
brew install --cask ghosttyOuvrez l'application depuis Spotlight ou le Launchpad. Ghostty démarre avec une configuration minimale : police système, aucun thème appliqué, aucun réglage caché. Tout se joue dans un seul fichier texte, cherché dans plusieurs emplacements, chargés dans cet ordre :
~/.config/ghostty/config (renommé config.ghostty depuis la version 1.2.3, l'ancien nom reste accepté) - l'emplacement multiplateforme, basé sur la convention XDG~/Library/Application Support/com.mitchellh.ghostty/config - l'emplacement propre à macOS💡 Un nom de fichier qui change. Si un tutoriel mentionne
configsans extension, c'est l'ancien nom (avant la 1.2.3) : les deux fonctionnent toujours, aucune conversion nécessaire.
Pour rester simple et portable, utilisez le chemin multiplateforme :
mkdir -p ~/.config/ghostty
touch ~/.config/ghostty/config
code ~/.config/ghostty/config(Remplacez code par nvim ou l'éditeur de votre choix.)
Avant d'écrire quoi que ce soit, explorez la liste complète des options disponibles, documentées directement en ligne de commande :
ghostty +show-config --default --docs | lessCette commande imprime chaque option, sa valeur par défaut et une explication - c'est la meilleure référence, toujours synchronisée avec la version installée. Vous préférez naviguer dans un navigateur ? La référence de configuration complète liste les mêmes options en ligne. Ajoutez ensuite vos premiers réglages :
font-family = "JetBrains Mono"
font-size = 14
window-padding-x = 10
window-padding-y = 10
cursor-style = bar
macos-titlebar-style = tabsLa dernière ligne intègre les onglets directement dans la barre de titre, au lieu d'une rangée séparée qui mange de l'espace vertical. Enregistrez, puis rechargez la configuration sans redémarrer l'application avec cmd+shift+,. Ghostty applique le changement immédiatement : c'est le réflexe à prendre après chaque modification.
💡 À retenir. Un seul fichier texte, un raccourci pour recharger (
cmd+shift+,), et+show-configcomme documentation embarquée toujours à jour.
Ghostty embarque plusieurs centaines de thèmes prêts à l'emploi, importés du dépôt communautaire iterm2-color-schemes et mis à jour chaque semaine. Listez-les directement depuis le terminal :
ghostty +list-themesChoisissez-en un et ajoutez-le à votre configuration :
theme = Catppuccin FrappeSur un Mac, mieux vaut définir un thème par mode d'affichage plutôt qu'un thème fixe. Ghostty bascule automatiquement selon le réglage clair/sombre du système :
theme = dark:Catppuccin Frappe,light:Catppuccin LatteVient ensuite l'intégration shell (shell integration) : un ensemble de fonctionnalités que Ghostty injecte automatiquement dans votre shell au démarrage, sans rien configurer. Concrètement :
cmd enfoncé sélectionne uniquement la sortie d'une commande.bash, elvish, fish, nushell et zsh.⚠️ Piège fréquent. Le
/bin/bashlivré avec macOS est une version trop ancienne pour supporter l'injection automatique. Si c'est votre shell par défaut, rien ne s'active, sans message d'erreur visible. Installez une version récente avecbrew install bashet changez de shell, ou passez àzsh(le shell par défaut de macOS depuis Catalina).
Pour vérifier que l'intégration fonctionne sans chercher dans des logs, ouvrez un nouvel onglet depuis un dossier différent : s'il démarre bien dans ce dossier plutôt que dans votre $HOME, elle est active.
Trois familles de terminaux se disputent le même public :
| Terminal | Interface | Rendu | Gestion de sessions |
|---|---|---|---|
| iTerm2 | Native (Cocoa), la plus riche en fonctionnalités (triggers, badges, arrangements) | GPU optionnel (Metal), à activer dans les préférences | Arrangements de fenêtres |
| Kitty | Personnalisée, ne suit pas toujours les conventions macOS | GPU natif | Kittens de session, non persistant |
| WezTerm | Personnalisée, ne suit pas toujours les conventions macOS | GPU natif | Multiplexeur intégré, sessions restaurables |
| Ghostty | Native (Swift, AppKit, SwiftUI) | GPU natif | Aucune, tmux recommandé |
Ghostty tranche sur un point précis : son interface macOS est écrite avec les mêmes briques que n'importe quelle application native Apple, reliées à un cœur commun écrit en Zig. Résultat concret : onglets, découpage en panneaux (splits) et Quick Look fonctionnent exactement comme dans les autres apps du système, sans widget réinventé.
Sur la vitesse pure, restons honnête : Mitchell Hashimoto le formule ainsi dans la documentation officielle - Ghostty vise à rester « dans la même classe que les terminaux les plus rapides », parfois devant Kitty ou WezTerm sur un benchmark donné, parfois derrière. La vraie différence ne se joue pas sur les millisecondes, mais sur l'intégration système.
Là où Ghostty perd encore face à WezTerm : l'absence de gestionnaire de sessions intégré. Fermez la fenêtre, et les onglets ouverts disparaissent - WezTerm, lui, peut multiplexer et restaurer des sessions nativement. La plupart des utilisateurs de Ghostty comblent ce manque avec tmux (le multiplexeur de terminal), qui garde les sessions vivantes indépendamment de la fenêtre graphique. Si vous voulez aller jusque-là, l'étape suivante logique, c'est Maîtriser tmux : sessions, panneaux et partage, qui couvre justement la configuration Ghostty pour garder les vraies couleurs (true color) à l'intérieur d'une session tmux.
Découper l'écran en panneaux (splits). Ghostty divise nativement une fenêtre en panneaux, sans dépendre de tmux pour un simple partage d'écran. Listez d'abord les raccourcis déjà actifs par défaut :
ghostty +list-keybinds --default | grep -i splitSi la disposition par défaut ne vous convient pas, personnalisez-la avec l'action new_split (qui prend une direction : right, down, left, up, ou auto pour choisir automatiquement selon la forme de la fenêtre) et goto_split pour naviguer entre panneaux :
keybind = cmd+d=new_split:right
keybind = cmd+shift+d=new_split:down
keybind = cmd+alt+right=goto_split:right
keybind = cmd+alt+left=goto_split:left
keybind = cmd+alt+up=goto_split:up
keybind = cmd+alt+down=goto_split:down
keybind = cmd+shift+enter=toggle_split_zoom💡 Clin d'œil aux habitués d'iTerm2. Les deux premières lignes reproduisent volontairement ses raccourcis par défaut (
cmd+dpour un split vertical,cmd+shift+dpour un split horizontal), pour ne pas perdre vos automatismes.
La dernière ligne (toggle_split_zoom) agrandit temporairement le panneau actif en plein écran, pratique pour lire un long log sans redimensionner à la souris. Pour ajuster une taille au clavier plutôt qu'à la souris, resize_split prend une direction et une quantité en pixels (resize_split:right,50), et equalize_splits remet tous les panneaux à égalité en un seul raccourci.

Deux réglages illustrent par ailleurs l'intégration native macOS de Ghostty : la restauration de fenêtre et la saisie sécurisée automatique.
Par défaut, macOS ne restaure une application que si elle a été fermée de force (crash, redémarrage) ou si l'option système « Restaurer les fenêtres au redémarrage » est activée. Pour forcer Ghostty à toujours retrouver ses onglets et ses panneaux (splits) après une fermeture volontaire :
window-save-state = alwaysPosition et taille de fenêtre reviennent dans tous les cas ; le répertoire de travail de chaque onglet, lui, ne revient que si l'intégration shell vue plus haut est active.
Depuis la version 1.2.0, Ghostty peut détecter qu'un prompt de mot de passe s'affiche (par exemple avec sudo) et activer automatiquement la fonction macOS « Secure Input », qui empêche toute autre application de lire les événements clavier pendant que vous tapez :
macos-auto-secure-input = true
macos-secure-input-indication = trueLa deuxième ligne affiche un indicateur visuel quand la protection est active, utile pour savoir si elle tourne réellement.
⚠️ Limite à connaître. La détection repose sur des heuristiques : elle ne fonctionne pas dans une session SSH, et peut occasionnellement se déclencher (ou non) là où vous ne l'attendez pas.
Ghostty est installé, configuré avec votre police et un thème qui suit l'apparence système, et son intégration shell est vérifiée - de quoi remplacer votre terminal actuel dès aujourd'hui. Le fichier ~/.config/ghostty/config reste le seul endroit à connaître pour tout nouveau réglage.
Pour la suite, une piste concrète : parcourez le catalogue avec ghostty +list-themes jusqu'à trouver un thème lisible plusieurs heures d'affilée. Et si vous jonglez entre plusieurs projets, ajoutez tmux par-dessus pour garder des sessions persistantes, comme vu plus haut.
Merci de me suivre dans cette aventure ! 🍺