Aller au contenu

shareBin

shareBin/ est un dossier de petits exécutables livrés avec τ-mux. Son chemin absolu est ajouté en tête du $PATH de chaque shell que τ-mux ouvre, donc les scripts fournis (show_md, show_img, show_chart, …) sont accessibles comme commandes nues depuis n’importe quel volet — sans étape d’installation, sans modification de shell-rc, sans wrapper bun run.

Chaque script utilise le protocole sideband (fd 3/4/5) pour afficher un panneau HTML/SVG plein-volet épinglé au volet hôte. Quand l’utilisateur ferme le panneau — ou envoie SIGINT / SIGTERM — le script se termine.

CommandeCe qu’elle fait
show_md <file.md>Aperçu markdown en direct. Re-rend à chaque changement de mtime sauf --no-watch.
show_img <path>Panneau image centré. Conserve le ratio ; plafond 50 Mo.
show_html <file>Habille un fragment HTML quelconque dans la chrome de panneau standard.
show_table <csv|tsv>Table HTML triable. Cliquer un en-tête trie asc / desc / restaure.
show_chart <csv>Graphique ligne / barre / nuage de points. Re-rendu à chaque redimensionnement.
show_json <file>Arbre JSON pliable. --depth N règle la profondeur ouverte par défaut.
show_yaml <file>YAML → arbre (parseur partiel ; pour du YAML complexe, passez par yq -o json).
show_diff <patch>Diff unifié côte-à-côte avec compte des hunks et des +/-.
show_gitdiffgit diff du dépôt courant, côte-à-côte.
show_gitlog [path]Log git en graphe de branches. --max N et --branches.
show_qr <text>SVG de QR code. --ec, --scale, --margin, --dark/--light.
show_sysmonMoniteur système plein-volet — arc CPU, barres par cœur, RAM, top procs, sparkline.
show_webcamFlux MJPEG webcam via ffmpeg + AVFoundation (macOS) / V4L2 (Linux).
show_logs [file]Visionneuse de logs en direct — couleurs par niveau, compteurs, recherche, tampon borné. Lit un fichier en une passe ou streame stdin en direct. (0.3.186)
show_csv_profile <csv|tsv>Profilage de données — types de colonnes inférés, nulls, comptes de valeurs distinctes, valeurs les plus fréquentes, résumés numériques, histogrammes, lignes d’échantillon. (0.3.186)
show_httpInspecteur de réponses HTTP — depuis une sortie curl -i, un fichier sauvegardé, stdin, ou un fetch direct via --url. Statut, en-têtes, redirections, corps JSON/HTML/texte. (0.3.186)
show_mermaid [file.mmd]Rendu de diagrammes Mermaid (fichier ou stdin). La première version charge Mermaid depuis un CDN — nécessite un accès réseau. (0.3.186)
show_envTableau de bord de diagnostics environnement + projet, avec caviardage prudent des secrets. (0.3.186)
show_sqlite <db>Navigateur SQLite en lecture seule — tables, schémas, comptes de lignes, aperçus, requête optionnelle en lecture seule. (0.3.186)
show_portsTableau de bord en direct des ports TCP en écoute et de leurs processus propriétaires. (0.3.186)
show_procArbre de processus / inspecteur de ressources en direct (basé sur ps). (0.3.186)
show_image_diff <a> <b>Comparaison d’images pour captures d’écran/artefacts de design — modes côte-à-côte, pelure d’oignon et heatmap de diff. (0.3.186)
show_openapi <spec>Explorateur OpenAPI/Swagger interactif en lecture seule (JSON ou YAML). (0.3.186)
demo_status_keysExerce tous les rendus du DSL de status-keys via ht set-status.

La plupart acceptent <path> ou stdin (- est implicite quand argv est vide), donc ils se composent avec les pipes shell :

Fenêtre de terminal
ps aux | show_table --tsv
git diff | show_diff
curl -s api.example.com/data.json | show_json --depth 3
echo "https://example.com" | show_qr --ec H
  • src/bun/pty-manager.ts résout le chemin absolu de shareBin/ (que l’on tourne depuis un checkout dev ou depuis le .app packagé) et le préfixe au PATH de chaque Bun.spawn. Le dossier est aussi listé sous build.copy dans electrobun.config.ts pour qu’il soit inclus dans le bundle.
  • Chaque script est un exécutable #!/usr/bin/env bun (ou python3) sans extension — show_md, pas show_md.ts. Le shebang permet au kernel de les lancer directement via le lookup PATH.
  • Les scripts importent depuis shareBin/lib/ (helpers de rendu — full-screen, chart, csv, markdown, json-tree, qr, git-log, diff-render, table, yaml) et depuis les clients fournis hyperterm.ts / hyperterm.py. Ces clients deviennent des no-ops hors de τ-mux, donc le même script tourne aussi depuis un terminal classique.
  • Le rendu passe par lib/full-screen.ts, qui produit une page HTML stylée Catppuccin et l’épingle au volet hôte. La page se re-rend au redimensionnement, sort proprement à la fermeture, et n’affecte jamais le PTY sous-jacent.

Déposez un exécutable dans shareBin/, marquez-le +x, et il devient une commande de première classe dans chaque shell τ-mux. Le guide d’authoring orienté agents — boilerplate, helpers de rendu, positionnement des panneaux, gestion des événements — vit dans doc/system-sharebin.md. Version courte :

#!/usr/bin/env bun
// shareBin/show_widget
import { fullScreenHtml, fullScreenPage, CATPPUCCIN } from "./lib/full-screen";
fullScreenHtml({
render: () => fullScreenPage({
tag: { label: "WIDGET", color: CATPPUCCIN.blue },
title: "hello",
body: `<p style="padding:24px">…</p>`,
}),
});
Fenêtre de terminal
chmod +x shareBin/show_widget
# rebuild / relance τ-mux — `show_widget` est maintenant sur le $PATH de chaque volet
  • shareBin/ — les scripts eux-mêmes et leurs helpers lib/.
  • shareBin/hyperterm.ts / shareBin/hyperterm.py — bibliothèques client sideband.
  • src/bun/pty-manager.ts — préfixe PATH au moment du spawn de shell.
  • electrobun.config.ts — build.copy.shareBin embarque le dossier dans l’app packagée.
  • doc/system-sharebin.md — guide d’authoring pour de nouvelles commandes.