GIZMO — Créez des applications TUI avec MOGWAI

Il existe une catégorie d’applications qu’on a tendance à oublier dans un monde dominé par les interfaces graphiques : les applications en mode terminal. Robustes, légères, rapides à lancer, utilisables en SSH, elles ont des qualités que les GUI n’ont pas. Mais les créer demande souvent de maîtriser des frameworks complexes, dans des langages peu accessibles.

C’est le point de départ de GIZMO.

Qu’est-ce que GIZMO ?

GIZMO est une application console standalone qui permet de créer des interfaces TUI (Terminal User Interface) en utilisant le langage de script MOGWAI. Quelques lignes de script suffisent pour obtenir une fenêtre, des composants interactifs, des timers, des dialogs — le tout stylisé avec un système de thèmes.

Tête d'un personnage de kangourou avec de grands yeux et des oreilles amusantes.
GIZMO

Sous le capot, GIZMO s’appuie sur Terminal.Gui v2 pour le rendu et sur le runtime MOGWAI v8 pour l’exécution des scripts. Il se distribue sous forme d’exécutables self-contained pour Windows, macOS et Linux — aucun runtime .NET requis sur la machine cible.

Ce qu’on peut faire avec GIZMO

GIZMO propose 15 composants prêts à l’emploi : champs de saisie, listes, tableaux, cases à cocher, listes déroulantes, barres de progression, boutons… Le tout avec un système de couleurs qui supporte l’héritage parent → enfant, deux thèmes intégrés (dark et classic), et la possibilité de créer ses propres thèmes.

Interface utilisateur affichant des champs de saisie pour un nom, mot de passe, âge et prix, ainsi qu'une section de sélection pour différents types d'entités comme client, fournisseur et partenaire. Une liste de données de clients avec leurs noms, types et villes est également présente.
Exemple d’écran composé avec GIZMO

Les événements sont déclaratifs — onClick:, onChange:, onSelect: — et le cycle de vie des fenêtres est géré par onShow: et onHide:. Les timers MOGWAI restent actifs même pendant l’affichage d’un dialog.

Un exemple concret

Voici une horloge en temps réel en une trentaine de lignes :

mogwai.reset

timer 'clock' every 1000 do
{
now ->date -> '$d'
$d hour: get "00" ->format -> '$h'
$d minute: get "00" ->format -> '$m'
$d second: get "00" ->format -> '$s'
"{! $h}:{! $m}:{! $s}" eval -> '$time'
[! name: 'lbl' text: @$time] window.update
}

[!
name: 'main'
title: "Clock"
childs:
(
[ui.kind: 'ui.label' name: 'lbl' text: "00:00:00"]
[ui.kind: 'ui.button' label: "Close" onClick: { false window.hide }]
)
]

'clock' timer.start

window.show drop

C’est le langage MOGWAI dans toute sa cohérence : RPN, déclaratif, concis.

Open source

GIZMO est publié sous licence Apache 2.0. Le repo contient le code source, la documentation complète, des thèmes et des exemples prêts à l’emploi (horloge, calculatrice RPN, liste de tâches).

👉 Site : gizmo.mogwai.eu.com
👉 GitHub : github.com/Sydney680928/Gizmo


GIZMO est un projet personnel, développé en parallèle de MOGWAI. Comme toujours, les retours sont les bienvenus.

Laisser un commentaire

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture