METALTERM : un terminal macOS dessiné par le GPU, avec ses commandes en blocs
⏱️ Temps de lecture estimé : 4 minutes
📌 METALTERM est un terminal pour macOS dont chaque frame passe par Metal 3 : un log de 200 Mo défile à 120 fps sur un écran 120 Hz, et chaque commande avec sa sortie forme un bloc déjà tracké, durée comprise.
Le pitch tient en une image : faire défiler 200 Mo de scrollback sans jamais baisser la fréquence. C’est le genre de chiffre qu’on prend avec scepticité, alors j’ai cherché le détail. Les mesures publiées sont deux runs de 30 s sur un M3 Max, en 118×34, scroll continu d’un buffer plein : 119,7 Hz stables, 0 frame perdue, 0,22 ms de temps GPU par frame — 2,6 % du budget de 8,33 ms — et 0,13 ms côté CPU. Le texte passe dans une passe Metal, la lumière ambiante dans l’autre, et quand rien ne change à l’écran le rendu n’envoie aucune frame, pas moins.
Ce que je préfère dans ce terminal, ce n’est pas le nombre. C’est le scrollback qui devient structuré. Metalterm lit les marqueurs OSC 133 déjà émis par le shell : il sait où commence une commande, où se termine sa sortie, combien de temps elle a pris, et il pose une marque rouge dans la gouttière quand elle échoue. Un pnpm test qui passe, un docker compose up, puis un ./scripts/deploy.sh edge-01 qui sort en exit 255 : trois blocs, trois durées lisibles, un échec qui reste visible. C’est précisément le détail qui disparaît quand on retourne à un terminal classique.
Le reste est du même ordre — ce que l’on installe d’habitude à côté. Palette de commandes en ⌘⇧P, ouverte en moins d’une frame. Recherche dans tout le scrollback en ⌘F, littérale ou regex, surlignée sur le GPU dès la première frappe. Un curseur qui a une physique : interpolation sub-cell, trois formes, sept styles de mouvement (Snap, Ease, Spring, Smear, Squash, Phosphor, Arc) et un seul interrupteur pour tout couper. Chaque onglet et chaque split garde son répertoire, ses 10 000 lignes de scrollback et son propre processus shell. Un build qui finit dans un onglet que vous ne regardez pas remonte quand même en notification macOS, OSC 9 et OSC 777 étant interprétés.
- 📦 Commandes et sorties regroupées en blocs, avec leur durée réelle et une marque rouge en cas d’échec
- ⚡️ 0,22 ms de GPU par frame, 119,7 Hz stables et 0 frame perdue en scroll continu
- 🔎 Palette en ⌘⇧P et recherche regex dans tout le scrollback en ⌘F
- 🎨 18 thèmes, plus les vôtres importables depuis un fichier Ghostty ou Kitty
- 🧠 Une cellule de 20 octets, emoji-drapeaux et groupes de famille dessinés en une seule cellule
La mémoire est le sujet qu’on regarde deux fois. Ces tables d’emoji couleur, de clusters de graphèmes et de couleurs de soulignement ne sont allouées qu’à la demande : un log de compilation n’en consomme aucune, et la cellule est restée à 20 octets. Tout ce que vous réglez atterrit dans un seul fichier texte sous ~/.config/metalterm, que vous pouvez versionner ou ne jamais ouvrir. Le téléchargement est un .dmg de 6 Mo, universel, notarisé par Apple, gratuit, sans compte et sans télémétrie.
Ma réserve ne porte pas sur le rendu, mais sur ce qui l’entoure. L’application est en bêta et son code source est privé : le dépôt GitHub ne publie que le site, les versions et la documentation des thèmes. Impossible d’auditer les 0,22 ms, donc il faut les lire comme une mesure annoncée. macOS 14 Sonoma est le seul système concerné pour l’instant, un backend Vulkan n’arrivant qu’après la 1.0, et aucun réglage n’est importé depuis un autre terminal. Reste que le moteur ne touche jamais à vos rc files.
Ce que j’apprécie au fond, c’est la sobriété du périmètre : une touche par fonction, rien à configurer le premier jour, le même shell que d’habitude. Pour qui cherche un terminal plus rapide sur Mac, c’est le genre de bêta qu’on installe sans réfléchir — quitte à garder iTerm2 ouvert deux jours, par principe.
Sources






