Dashboard HQTUI : CPU, mémoire, réseau et processus en terminal

HQTUI : des dashboards btop-grade direct dans votre terminal TypeScript

https://hqtui.com/

📌 HQTUI est une bibliothèque TypeScript qui construit des tableaux de bord terminal au rendu btop-grade avec une seule importation : createApp(). Zéro dépendance au runtime, zéro ncurses, couleurs vraies et un rendu différentiel qui n’écrit que ce qui change. Le tout en dark par défaut.

Les applications terminal traînent souvent un air années 90, entre ncurses et couleurs limitées. HQTUI part du principe inverse : elle prend le terminal en main directement — séquences ANSI/VT, framebuffer en tableaux typés, rendu différentiel, graphisme Braille et truecolor — pour qu’un dashboard écrit en TypeScript ressemble et se comporte comme une appli desktop moderne, tout en démarrant instantanément et en tournant correctement sur SSH.

Ce qui frappe, c’est la frugalité. La bibliothèque n’importe rien : pas de ncurses, pas d’addon natif, pas de DOM navigateur, pas de React, aucune requête réseau, aucun sous-processus. Le moteur de rendu tient l’écran dans quatre tableaux typés ; chaque frame est comparée à la précédente et seules les portions modifiées sont écrites, avec un modèle du stylo du terminal pour ne jamais répéter une séquence d’échappement. Passer de « CPU 72 % » à « CPU 73 % » n’écrit qu’un caractère. Le benchmark parle : une frame à 10 % de cellules changées en 0,29 ms, zéro octet écrit à l’idle (le rendu tombe à 0 fps quand rien ne bouge), 30 fps en adaptatif, 15 fps sur SSH.

Côté rendu graphique, chaque cellule devient une matrice 2×4 pixels : un panneau de 40×10 affiche en 80×40, avec repli vers les blocs puis l’ASCII si le terminal ne suit pas. Le layout se résout tout seul (rangées, colonnes, grilles avec spans, tailles en « 40 % », « 2fr », auto ou min/max), sans arithmétique de coordonnées dans votre code. La bibliothèque embarque plus de trente widgets — panneaux, tables, arbres, journaux, jauges, donuts, sparklines, graphes, onglets, modales, palettes de commandes et tous les contrôles d’entrée — et neuf thèmes, du dark à gruvbox en passant par nord ou tokyo night, avec un defineTheme() pour les vôtres.

Le détail qui m’a convaincu, c’est la testabilité. Un rendu headless renvoie du texte, de l’ANSI, du HTML ou une grille de cellules, donc on assert ce qu’affiche l’écran sans TTY ni capture. Et le terminal est restauré quoi qu’il arrive — Ctrl+C, SIGTERM, exception non captée ou promesse rejetée : l’écran alternatif, le curseur et le mode brut reprennent leur place.

Une réserve honnête : le projet est jeune (v0.1.9, une centaine d’étoiles). Bun en est le runtime par défaut, mais Node 22.6+ suffit et Deno est accepté au mieux. Le demo lit vos vraies métriques sur Linux, macOS et Windows sans dépendance native, et --sim fournit une simulation déterministe pour reproduire captures et benchmarks.

Je trouve l’approche remarquable pour une bibliothèque de ce poids : un TUI qui se teste et se nettoie derrière lui, sans aucune dépendance. Pour qui construit des dashboards CLI ou des outils d’ops, l’essai se fait en une ligne avec bunx @profullstack/hqtui-demo, en réel ou en simulation.

Points clés :

  • 🎨 Dashboards btop-grade avec une seule createApp(), dark par défaut
  • 🪶 Zéro dépendance au runtime : pas de ncurses, pas de React, jamais de réseau
  • ⚡ Rendu différentiel en truecolor : ~0,29 ms à 10 % de cellules changées, 0 fps à l’idle
  • 📊 Plus de 30 widgets et 9 thèmes, layout en grilles/fr/%
  • 🧪 Rendu headless testable et terminal toujours restauré proprement

Sources :

Publications similaires

Laisser un commentaire