Applications GUI dans le terminal avec Term.Everything❗

Applications GUI dans le terminal avec Term.Everything❗

Vous appréciez notre travail......nous recrutons !

Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.

Term.Everything❗ permet l’exécution d’applications GUI directement dans l’environnement du terminal. Cette fonctionnalité vous permet d’exécuter des applications comme Firefox depuis un serveur distant via SSH.

L’application est une implémentation complète d’un Compositeur Wayland. Selon l’annonce du développeur sur HackerNews, environ 80% du code est écrit en TypeScript pour faciliter l’engagement des développeurs et encourager les contributions. La page de documentation How I Did It! sur GitHub fournit une explication détaillée de la méthode d’implémentation.

L’outil s’avère inestimable lorsque vous devez accéder à des services nécessitant une interface graphique ou un navigateur web sur des serveurs distants protégés par des pare-feux où seules les connexions SSH sont autorisées.

Contrairement au transfert X11 traditionnel qui exige une installation fastidieuse d’un serveur X11 sur l’hôte distant et nécessite localement un environnement client X11 complet, Term.Everything❗ offre une simplicité remarquable. Avec le téléchargement d’un seul binaire compact, vous pouvez accomplir ce qui nécessitait auparavant une configuration étendue et de multiples composants. La solution est distribuée sous la forme d’un binaire AppImage auto-exécutable avec une empreinte compacte de moins de 50 Mo (la dernière version au moment de la rédaction fait 41,9 Mo).

Terminal

Bien que ce ne soit pas obligatoire, il est recommandé d’utiliser un terminal qui prend en charge le rendu d’images. La qualité visuelle de la fenêtre d’application est limitée par le nombre de lignes et de colonnes disponibles dans votre terminal. Les terminaux standards comme Gnome Terminal fonctionneront, mais avec une résolution limitée.

Cela représente une excellente occasion d’évaluer Ghostty, un terminal moderne disponible pour Linux et macOS.

snap install ghostty --classic

Cependant, la prise en charge de la souris dans Ghostty est limitée avec Term.Everything. De meilleurs résultats ont été obtenus avec Kitty sur Linux ou iTerm2 sur macOS. Les commandes suivantes installent et démarrent Kitty sur Ubuntu :

apt install -y kitty
kitty

Environnement de test

Term.Everything❗ peut être exécuté depuis un terminal local, à distance via SSH, ou dans une machine virtuelle. Pour les besoins de la démonstration, nous utiliserons une image Ubuntu exécutée comme conteneur Incus.

# Créer un conteneur Incus
incus --project default launch images:ubuntu/24.04 term-everything
incus --project default shell term-everything

Installation

Les étapes suivantes téléchargent le binaire AppImage auto-exécutable et le préparent pour l’utilisation.

L’AppImage nécessite deux bibliothèques spécifiques. Nous installerons également curl pour le téléchargement du binaire.

# Installer les dépendances requises
apt install -y curl libharfbuzz0b libfontconfig1 >/dev/null 2>&1
# Télécharger et préparer le binaire
curl -L -o term-everything https://github.com/mmulet/term.everything/releases/download/0.5.1/term.everything.mmulet.com-dont_forget_to_chmod_+x_this_file
# Le rendre exécutable
chmod u+x term-everything

Utilisation

Pour démontrer la fonctionnalité, nous allons créer un simple fichier HTML et l’ouvrir avec Firefox.

# Installer l'application cible
apt install -y firefox >/dev/null 2>&1
# Écrire un exemple de fichier HTML
echo '<h1>Bonjour</h1>' > test.html
# Démarrer Firefox, attendre quelques secondes
./term-everything firefox test.html

Pour lancer une application GUI, ajoutez la commande de l’application après term-everything et observez l’interface graphique apparaître directement dans le terminal.

Firefox dans le terminal

Nettoyage

Après les tests, le conteneur Incus est supprimé pour nettoyer l’environnement.

incus --project default delete --force term-everything
Partagez cet article

Canada - Maroc - France

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.

Support Ukrain