Outils

Ghostel.el : un émulateur de terminal Emacs propulsé par libghostty

13 juillet 2026 Mehdi 06:38
Ghostel.el : un émulateur de terminal Emacs propulsé par libghostty

Les utilisateurs d’Emacs ont longtemps jonglé entre vterm et eat pour obtenir un terminal décent dans leur éditeur. Ghostel.el arrive avec une proposition différente : brancher directement le moteur VT de Ghostty dans Emacs, sans compromis sur les fonctionnalités modernes.

Ghostel.el : le terminal Emacs propulsé par libghostty

Ghostel.el est un émulateur de terminal pour Emacs qui s’appuie sur libghostty-vt, le même moteur VT qui anime le terminal Ghostty. Le projet suit une architecture en deux couches, directement inspirée de emacs-libvterm : un module natif écrit en Zig gère l’état du terminal, le rendu et les entrées/sorties PTY, tandis qu’Elisp prend en charge les keymaps, les buffers et l’intégration des processus distants.

Concrètement, cela signifie que Ghostel.el hérite de tout ce que libvterm ne supporte pas. On parle du protocole clavier Kitty, du protocole graphique Kitty pour les images inline, des hyperliens OSC 8, des requêtes de couleur OSC 4/10/11 et de la sortie synchronisée DEC 2026.

Ce qui distingue Ghostel de vterm et eat

La différence fondamentale tient au moteur VT sous-jacent. Vterm repose sur libvterm, une bibliothèque respectée mais qui n’a pas suivi l’évolution rapide des protocoles de terminaux modernes. Eat implémente son propre moteur en Elisp pur, ce qui offre une portabilité maximale au prix d’un plafond de performance.

Ghostel.el choisit une troisième voie : déléguer au moteur Zig de Ghostty, un projet connu pour sa conformité et sa rapidité. Le module natif est téléchargé automatiquement au premier lancement, donc aucune toolchain n’est requise dans le cas courant.

Les fonctionnalités qui en découlent directement :

  • Images inline via le protocole graphique Kitty
  • Hyperliens cliquables OSC 8 avec navigation au clavier
  • Styles de soulignement enrichis (ondulé, double, pointillé)
  • Sortie synchronisée pour éviter le déchirement visuel
  • Détection automatique des invites de mot de passe
  • Intégration shell sans configuration pour bash, zsh, fish et nushell

Cinq modes d’entrée pour un workflow sans friction

Ghostel.el propose cinq modes d’interaction, dans la lignée de eat.el. Le mode par défaut est le mode semi-char : la quasi-totalité des touches est envoyée au terminal, à l’exception de quelques raccourcis Emacs réservés comme C-c, C-x ou M-x.

Le mode char envoie absolument tout au terminal, utile pour les applications TUI qui veulent capturer C-x ou M-x elles-mêmes. Le mode Emacs rend le buffer en lecture seule tout en laissant le terminal tourner en arrière-plan. Le mode copie gèle la sortie le temps de sélectionner du texte sans que le terminal défile. Le mode ligne se comporte comme M-x shell : on compose sa commande normalement dans Emacs avant d’envoyer.

Cette granularité répond à un vrai problème quotidien : alterner entre interaction avec le terminal et navigation dans le buffer sans perdre le fil.

Support Windows natif dès la version 0.43.0

La release 0.43.0 du 11 juillet 2026 introduit un backend ConPTY natif pour Windows. Les binaires pré-compilés couvrent x86_64-windows et aarch64-windows. Ghostel cherche d’abord les fichiers de support ConPTY redistribuables de Microsoft (conpty.dll et les helpers OpenConsole.exe) à côté du module natif pour bénéficier d’un comportement plus récent. En leur absence, il bascule sur l’API ConPTY incluse dans Windows.

C’est un signal clair d’ambition multiplateforme pour un projet qui aurait pu rester strictement Unix. La seule limitation documentée sur Windows concerne les terminaux distants via TRAMP : le redimensionnement dynamique de fenêtre n’est pas encore supporté pour les connexions Windows vers TRAMP.

Installation et intégration dans l’écosystème Emacs

Ghostel.el est disponible sur MELPA. Une seule ligne suffit pour l’installer :

(use-package ghostel :ensure t)

Le module natif se télécharge seul au premier M-x ghostel. La documentation officielle détaille également la compilation depuis les sources avec Zig 0.15.2 pour ceux qui préfèrent construire eux-mêmes.

L’intégration va plus loin que le simple terminal. Ghostel s’intègre avec TRAMP pour les terminaux distants, avec le mode compilation pour remplacer le buffer de build habituel, avec Eshell, Comint et même evil-mode via un package dédié. Il est aussi possible d’appeler des fonctions Elisp depuis le shell, ce qui ouvre des workflows assez puissants comme déclencher magit-status ou find-file directement depuis la ligne de commande.

Réception et maturité du projet

Le projet a été annoncé publiquement autour du 12 juillet 2026 et a obtenu 268 points et 52 commentaires sur Hacker News, une traction solide pour un outil de niche Emacs. La réception sur Lobste.rs a été similaire, avec des utilisateurs qualifiant Ghostel d’endgame de l’émulation de terminal sous Emacs.

Le projet reste jeune. Il n’existe pas encore de benchmarks publiés permettant une comparaison chiffrée avec vterm ou eat. La roadmap au-delà du support Windows n’est pas documentée publiquement. C’est un projet à surveiller, pas encore une valeur sûre établie.

Ce qu’il faut retenir

  • Ghostel.el branque le moteur VT de Ghostty dans Emacs via un module natif Zig, apportant des protocoles modernes qu’aucune alternative ne supporte encore nativement.
  • Cinq modes d’entrée couvrent tous les cas d’usage, du TUI le plus capricieux à la simple navigation dans le scrollback.
  • Le support Windows natif via ConPTY dès la v0.43.0 élargit la cible au-delà des environnements Unix.
  • L’installation passe par MELPA, le module se compile ou se télécharge automatiquement.
  • Le projet est prometteur mais jeune : à évaluer sur des workflows réels avant de remplacer vterm ou eat en production.

Si tu travailles dans Emacs et que les limitations de vterm ou eat te freinent, Ghostel.el mérite un test sérieux. N’hésite pas à partager ton retour d’expérience en commentaire ou à suivre le blog pour les prochaines analyses d’outils DevOps.

Sources

À lire aussi

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *