Ghostling : Terminal minimal utilisant libghostty pour démontrer l’API C
L’équipe Ghostty a publié un projet de démonstration open-source nommé Ghostling — un terminal mono-threadé dans un seul fichier C qui utilise libghostty-vt pour l’émulation VT et Raylib pour le rendu. Le projet démontre l’intégration de la bibliothèque sans accélération GPU, en se concentrant sur l’analyse des séquences, la gestion d’état et les entrées/sorties de base.
Architecture et Composants Clés
Ghostling est construit sur libghostty-vt — une bibliothèque sans dépendances externes, y compris libc. Elle gère l’analyse des séquences VT, le positionnement du curseur, l’application des styles, le réajustement du texte, le défilement et la gestion du renderer. Le rendu et la boucle de fenêtre sont implémentés via Raylib avec un renderer 2D, ce qui simplifie la démo et met en évidence la portabilité de libghostty.
Le projet hérite des optimisations de Ghostty : analyse SIMD, support Unicode et utilisation efficace de la mémoire. Libghostty fournit des API C et Zig pour l’intégration dans n’importe quelle application, séparant l’émulation de l’UI.
Avertissement important : Ghostling n’est pas un terminal de production. C’est un exemple minimal viable sans audit de code approfondi, destiné à l’étude de l’API.
Fonctionnalités Prises en Charge
Le projet implémente les fonctionnalités de base d’un émulateur de terminal :
- Redimensionnement de fenêtre avec réajustement du texte ;
- Couleurs 24 bits et palette 256 couleurs ;
- Styles de texte (gras, italique, soulignement) ;
- Unicode et clusters de graphèmes multi-codepoints sans artefacts ;
- Entrée clavier avec modificateurs (Shift, Ctrl, Alt, Super) ;
- Protocole clavier Kitty ;
- Suivi de souris (modes X10, normal, bouton, tout événement) ;
- Formats de rapport de souris (SGR, URxvt, UTF8, X10) ;
- Molette de souris pour défiler ou passer à l’app ;
- Barre de défilement avec glisser-pour-défiler.
Ces fonctionnalités couvrent les scénarios typiques d’apps shell, démontrant la robustesse de libghostty-vt en mode découplé.
Différences avec le Ghostty Principal
Ghostty utilise le rendu GPU et le multithreading pour des performances élevées. Ghostling est simplifié : mono-threadé avec rendu 2D CPU. Cela permet de tester libghostty dans des scénarios embarqués où le GPU est indisponible ou l’overhead indésirable. Raylib fournit un support multiplateforme sans bibliothèques de fenêtrage complexes.
Pour les développeurs intermédiaires/seniors, le projet sert de point de départ pour des terminaux personnalisés : ajoutez votre propre renderer (Vulkan, SDL, canvas personnalisé) sur libghostty-vt.
Enseignements Clés
- Libghostty-vt est un moteur VT autonome sans rendu, idéal pour l’intégration ;
- Ghostling montre l’intégration en un seul fichier de l’API C avec Raylib ;
- Compatibilité VT complète : couleurs, Unicode, souris, protocoles clavier ;
- Aucune dépendance, optimisations SIMD, empreinte mémoire faible ;
- Démo pour prototypage, pas pour usage quotidien.
Plans de Développement
Les développeurs ont annoncé une feuille de route :
- Protocole graphique Kitty pour les images ;
- Support presse-papiers OSC ;
- Configuration du titre de fenêtre OSC.
Cela étendra l’utilité pour les apps GUI avec sortie terminal, comme les plugins IDE ou clients de bureau distant.
— Editorial Team
Aucun commentaire pour le moment.