|

OPENTUI : des interfaces terminal sur un coeur natif en Zig

https://opentui.com

📌 OPENTUI est une bibliothèque pour construire des interfaces terminal interactives, écrite en Zig natif avec des bindings TypeScript et une ABI C utilisable depuis n’importe quel langage.

La plupart des frameworks TUI reposent sur un runtime interprété ou sur un seul langage. OpenTUI prend le parti inverse : un moteur natif compilé en Zig, exposé via une ABI C, puis encapsulé dans des bindings TypeScript. Le résultat est un cœur rapide et réutilisable, sur lequel viennent se greffer plusieurs couches d’utilisation sans repartir de zéro.

L’API principale est impérative et reste proche des primitives. Vous instanciez un renderer, vous ajoutez des composants comme Text, Box, Input, Select, ScrollBox, Code ou Diff, et le moteur se charge du reste. Le layout s’appuie sur Yoga, le même moteur que React Native, avec un modèle flexbox familier : flexDirection, flexGrow, gap, largeurs et hauteurs en pourcentage. La coloration syntaxique est intégrée via tree-sitter, ce qui permet d’afficher du code correctement mis en forme directement dans le terminal.

Ce qui rend le projet plus ambitieux qu’un simple wrapper autour de ncurses, c’est l’écosystème de bindings. En plus de l’API impérative @opentui/core, OpenTUI fournit des reconcilers pour React et Solid.js. Vous pouvez donc décrire une interface terminal avec des composants et de la réactivité, exactement comme dans le navigateur, mais rendue dans un terminal. Une intégration Three.js en WebGPU existe également, ainsi qu’une API Timeline pour les animations.

Quelques éléments techniques confirmés :

  • ⚡ Cœur natif en Zig avec ABI C pour tout langage
  • 📐 Layout flexbox via le moteur Yoga
  • 🖥️ Composants : Text, Box, Input, Select, ScrollBox, Code, Diff
  • 🎨 Coloration syntaxique intégrée avec tree-sitter
  • ⚛️ Reconcilers React et Solid.js disponibles
  • 🎬 API Timeline pour les animations terminal

OpenTUI n’est pas un projet théorique. Il fait tourner OpenCode en production aujourd’hui, et le dépôt indique qu’il alimentera également terminal.shop. C’est un argument de poids : le moteur est éprouvé sur une application réelle, dense et interactive, pas seulement sur des démos.

Je trouve l’approche particulièrement cohérente pour l’écosystème actuel. Les outils en ligne de commande redeviennent un terrain de création, et les agents de code ont besoin d’interfaces riches pour afficher des plans, des diffs, des sélections et des journaux. Avoir un cœur natif, multi-langage et multi-framework évite la fragmentation entre des dizaines de bibliothèques TUI incompatibles.

La contrepartie est essentiellement technique. Construire les paquets depuis le dépôt demande d’avoir Zig installé, et le projet reste jeune : 90 releases, un monorepo actif et une API encore en évolution. Les bindings React et Solid.js existent mais leur maturité devra être confirmée sur des projets plus larges. La documentation est en place, avec des guides de démarrage et des exemples exécutables.

OPENTUI me semble être l’une des fondations les plus prometteuses pour redonner au terminal une couche de présentation moderne. Pas un émulateur de navigateur, mais un moteur pensé pour les caractères, le clavier et les contraintes réelles d’un terminal. Pour les développeurs d’outils CLI, d’agents ou de dashboards en ligne de commande, c’est un projet à suivre de près.

Sources

Publications similaires

Laisser un commentaire