La scène de crime

Zurich, café de l’Hôtel Schweizerhof. Un café au lait, vue sur le lac, et votre serviteur avec son MacBook Air M3 flambant neuf, prêt à travailler deux heures avec Claude Code avant une réunion.

Deux heures plus tard : batterie à 15%. Alerte rouge. Panique.

Mais comment ? Je n’étais que dans un terminal à écrire du code. Ni vidéo, ni Zoom, rien qui justifie une telle consommation.

J’ouvre le Moniteur d’activité, onglet Énergie, et voilà le coupable : Ghostty, avec une consommation cumulée de 3600 au cours des 12 dernières heures. Pour vous donner une idée, Brave Browser a consommé 125. Zoom avec vidéo, 99. Claude (l’app de bureau), 46.

Mon terminal — une application qui affiche du texte — a consommé 30 fois plus qu’un navigateur web.

L’ironie des ironies

Arrêtez-vous un instant pour réfléchir à ce que je viens d’écrire.

Un terminal. Un émulateur de VT100. Une technologie de 1978. Littéralement une application dont le travail consiste à afficher des lettres sur un écran, quelque chose qu’un Commodore 64 faisait les doigts dans le nez.

Et en 2026, il a besoin d’un GPU pour fonctionner.

Autrement dit : nous utilisons la puissance de calcul qui pourrait rendre Toy Story en temps réel… pour afficher ls -la.

Le terminal VT100 original consommait 30W écran CRT inclus. Mon MacBook Air, avec sa puce de dernière génération spécifiquement conçue pour l’efficacité énergétique, consomme plus pour afficher un git status que pour exécuter un appel vidéo.

C’est comme prendre une Ferrari pour aller acheter le pain. Mais en pire, car la Ferrari a au moins du sens si vous voulez aller vite. Ici, il n’y a aucun avantage pratique : le texte a exactement le même aspect.

Pourquoi diable un terminal a-t-il besoin d’un GPU ?

Ghostty, Alacritty, Kitty et compagnie font partie d’une nouvelle génération de terminaux « accélérés par GPU ». La promesse : rendu plus fluide, meilleures performances avec beaucoup d’output, polices plus nettes.

La réalité : ils consomment de la batterie comme s’il n’y avait pas de lendemain pour afficher exactement la même chose que Terminal.app affiche en utilisant le CPU.

Le problème n’est pas seulement le rendu. C’est que lorsque Claude Code tourne, il y a un output constant : spinners, logs, résultats d’outils. Chaque caractère qui apparaît à l’écran déclenche le pipeline de rendu du GPU. Metal s’active, les shaders font leur travail, les frames se composent…

Pour afficher un point qui tourne.

Comme si cela ne suffisait pas, ces terminaux modernes n’entrent pas correctement en « App Nap ». macOS a un système pour mettre en pause les applications en arrière-plan, mais si le terminal affiche un spinner animé, le système pense qu’il fait quelque chose d’important et le maintient actif.

Solution économique : Terminal.app

La solution la plus simple est la plus évidente : utilisez Terminal.app.

Oui, le terminal qui vient avec macOS. Celui qui semble ne pas avoir changé depuis 2005. Celui qui n’a pas d’accélération GPU ni de ligatures ni aucune des modernités.

# Ouvrez Terminal.app et exécutez
claude

Ça fonctionne exactement pareil. Claude Code ne sait pas et ne se soucie pas du terminal depuis lequel vous l’exécutez. Et Terminal.app :

  • Utilise le rendu par CPU (très efficace sur Apple Silicon)
  • Entre correctement en App Nap
  • Consomme une fraction de la batterie

Est-ce sexy ? Non. Est-ce que ça fonctionne ? Parfaitement.

Solution améliorée : iTerm2 avec profils

Si vous ne pouvez pas vivre sans votre terminal moderne, iTerm2 a une option que Ghostty n’a pas : vous pouvez désactiver le rendu GPU.

Étape 1 : Créer un profil « Batterie »

  1. Ouvrez iTerm2
  2. PreferencesProfiles
  3. Dupliquez votre profil actuel (bouton + en bas à gauche, puis Duplicate Profile)
  4. Nommez le nouveau profil « Battery »
  5. Dans le profil Battery : Terminal → décochez « GPU Rendering »

Étape 2 : Changement manuel

Lorsque vous travaillez sur batterie, changez simplement vers le profil :

ProfilesBattery (dans le menu d’iTerm2)

Deux clics. Votre terminal consomme maintenant comme un citoyen responsable.

Étape 3 : Changement automatique (optionnel)

Si vous voulez que le changement soit automatique, ajoutez ceci à votre .zshrc ou config.fish :

# Pour zsh (~/.zshrc)
if [[ $(pmset -g batt | grep -c "Battery Power") -gt 0 ]]; then
    echo -e "\033]50;SetProfile=Battery\a"
fi
# Pour fish (~/.config/fish/conf.d/iterm_battery.fish)
if test (pmset -g batt | grep -c "Battery Power") -gt 0
    echo -e "\033]50;SetProfile=Battery\a"
end

Chaque fois que vous ouvrirez un nouvel onglet, iTerm2 vérifiera si vous êtes sur batterie et basculera automatiquement vers le profil efficace.

Ghostty : l’éléphant dans la pièce

Et si je veux continuer à utiliser Ghostty ?

Il n’y a pas de solution élégante. Ghostty n’a pas d’option pour désactiver le rendu GPU. C’est GPU ou rien.

Vous pouvez essayer :

  • Minimiser la fenêtre quand vous ne l’utilisez pas (force quelque chose de similaire à App Nap)
  • Réduire les animations dans la config (cursor-style-blink = false)
  • Désactiver vsync si le tearing ne vous dérange pas

Mais la réalité est que Ghostty est conçu pour les performances, pas pour l’efficacité. Si vous travaillez régulièrement sur batterie, ce n’est pas l’outil approprié.

# ~/.config/ghostty/config
# Tentatives désespérées de réduire la consommation
cursor-style-blink = false
mouse-hide-while-typing = true

La réflexion

Il y a quelque chose de profondément ironique dans tout cela.

En 1978, afficher du texte sur un écran était trivial. En 2026, nous avons réussi à en faire une tâche qui nécessite du matériel de dernière génération et consomme plus d’énergie qu’un appel vidéo intercontinental.

Ils appellent ça le progrès.

La prochaine fois que quelqu’un vous vend un outil « optimisé » et « moderne », demandez-vous : optimisé pour quoi ? Car si la réponse est « pour que les lettres apparaissent 2 millisecondes plus tôt au prix de brûler la batterie », peut-être que le progrès va dans la mauvaise direction.

En attendant, Terminal.app est toujours là. Moche, ennuyeux, fonctionnant parfaitement depuis 20 ans.

Parfois l’ancien est ancien pour une raison. Et parfois, ça fonctionne tout simplement.

Cet article a été rédigé en espagnol et traduit avec l’aide de l’IA.