GNU/Linux >> Tutoriels Linux >  >> Linux

Une introduction à l'émulateur de terminal DomTerm pour Linux

DomTerm est un émulateur de terminal moderne qui utilise un moteur de navigateur comme "boîte à outils graphique". Cela permet certaines fonctionnalités intéressantes, telles que les graphiques et les liens incorporables, le texte enrichi HTML et les commandes pliables (afficher/masquer). Sinon, il ressemble et se sent comme un émulateur de terminal autonome riche en fonctionnalités, avec une excellente compatibilité xterm (y compris la gestion de la souris et la couleur 24 bits) et un "chrome" (menus) approprié. De plus, il existe un support intégré pour la gestion de session et les sous-fenêtres (comme dans tmux et GNU screen ), édition de base des entrées (comme dans readline ), et la pagination (comme dans less ).

Ci-dessous, nous examinerons plus en détail ces fonctionnalités. Nous supposerons que vous avez domterm installé (passez à la fin de cet article si vous avez besoin d'obtenir et de construire DomTerm). Mais d'abord, voici un bref aperçu de la technologie.

Frontend contre backend

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

La majeure partie de DomTerm est écrite en JavaScript et s'exécute dans un moteur de navigateur. Il peut s'agir d'un navigateur Web de bureau, tel que Chrome ou Firefox (voir image 3), ou d'un navigateur intégré. L'utilisation d'un navigateur Web général fonctionne bien, mais l'expérience utilisateur n'est pas aussi agréable (car les menus sont conçus pour la navigation générale, pas pour un émulateur de terminal), et le modèle de sécurité gêne, donc l'utilisation d'un navigateur intégré est plus agréable .

Les éléments suivants sont actuellement pris en charge :

  • qtdomterm , qui utilise la boîte à outils Qt et QtWebEngine
  • Un Electron intégration (voir image 1)
  • atom-domterm exécute DomTerm en tant que package dans l'éditeur de texte Atom (qui est également basé sur Electron) et s'intègre au système de volet Atom (voir image 2)
  • Un wrapper pour WebEngine de JavaFX , ce qui est utile pour le code écrit en Java (voir image 4)
  • Auparavant, l'interface préférée utilisait Firefox-XUL, mais Mozilla a depuis abandonné XUL

Actuellement, l'interface Electron est probablement la meilleure option, suivie de près par l'interface Qt. Si vous utilisez Atom, atom-domterm fonctionne plutôt bien.

Le serveur backend est écrit en C. Il gère les pseudo-terminaux (PTY) et les sessions. C'est également un serveur HTTP qui fournit le JavaScript et d'autres fichiers à l'interface. Le domterm La commande démarre les tâches du terminal et exécute d'autres requêtes. Si aucun serveur n'est en cours d'exécution, domterm se démonise. La communication entre le backend et le serveur se fait normalement à l'aide de WebSockets (avec libwebsockets sur le serveur). Cependant, l'intégration JavaFX n'utilise ni WebSockets ni le serveur DomTerm ; à la place, les applications Java communiquent directement à l'aide du pont Java–JavaScript.

Un solide émulateur de terminal compatible xterm

DomTerm ressemble à un émulateur de terminal moderne. Il gère les événements de souris, la couleur 24 bits, Unicode, les caractères double largeur (CJK) et les méthodes de saisie. DomTerm fait du très bon travail sur la suite de tests vtest.

Les fonctionnalités inhabituelles incluent :

Afficher/masquer les boutons ("folding") : Les petits triangles (vus dans l'image 2 ci-dessus) sont des boutons qui masquent/affichent la sortie correspondante. Pour créer les boutons, ajoutez simplement certaines séquences d'échappement dans le texte d'invite.

Prise en charge des clics de souris pour readline et éditeurs d'entrée similaires : Si vous cliquez dans la zone de saisie (jaune), DomTerm enverra la bonne séquence de touches fléchées à l'application. (Ceci est activé par des séquences d'échappement dans l'invite ; vous pouvez également le forcer en utilisant Alt+Clic.)

Stylez le terminal à l'aide de CSS : Cela se fait généralement dans ~/.domterm/settings.ini , qui est automatiquement rechargé lors de l'enregistrement. Par exemple, dans l'image 2, des couleurs d'arrière-plan spécifiques au terminal ont été définies.

Une meilleure console REPL

Un émulateur de terminal classique fonctionne sur des grilles rectangulaires de cellules de caractères. Cela fonctionne pour un REPL (shell de commande), mais ce n'est pas idéal. Voici quelques fonctionnalités DomTerm utiles pour les REPL que l'on ne trouve généralement pas dans les émulateurs de terminaux :

Une commande peut "imprimer" une image, un graphique, une formule mathématique ou un ensemble de liens cliquables : Une application peut envoyer une séquence d'échappement contenant presque n'importe quel code HTML. (Le code HTML est nettoyé pour supprimer JavaScript et d'autres fonctionnalités dangereuses.) 

L'image 3 montre un fragment d'un gnuplot session. Gnuplot (2.1 ou version ultérieure) prend en charge domterm comme type de terminal. La sortie graphique est convertie en une image SVG, qui est ensuite imprimée sur le terminal. Mon article de blog sur l'affichage de Gnuplot sur DomTerm fournit plus d'informations à ce sujet.

Le langage Kawa possède une bibliothèque pour créer et transformer des valeurs d'image géométriques. Si vous imprimez une telle valeur d'image sur un terminal DomTerm, l'image est convertie en SVG et intégrée dans la sortie.

Texte enrichi dans la sortie : Les messages d'aide sont plus lisibles et plus beaux avec le style HTML. Le volet inférieur de l'image 1 montre la sortie de domterm help . (La sortie est en clair si elle ne s'exécute pas sous DomTerm.) Notez le PAUSED message du téléavertisseur intégré.

Les messages d'erreur peuvent inclure des liens cliquables : DomTerm reconnaît la syntaxe filename:line:column: et le transforme en un lien qui ouvre le fichier et la ligne dans un éditeur de texte configurable. (Cela fonctionne pour les noms de fichiers relatifs si vous utilisez PROMPT_COMMAND ou similaire aux répertoires de pistes.)

Un compilateur peut détecter qu'il s'exécute sous DomTerm et émettre directement des liens de fichiers dans une séquence d'échappement. Ceci est plus robuste que de dépendre de la correspondance de modèles de DomTerm, car il gère les espaces et autres caractères spéciaux, et ne dépend pas du suivi des répertoires. Dans l'image 4, vous pouvez voir les messages d'erreur du compilateur Kawa. Passer la souris sur la position du fichier le souligne et le file: L'URL s'affiche dans le atom-domterm zone de message (en bas de la fenêtre). (Lorsque vous n'utilisez pas atom-domterm , ces messages sont affichés dans une zone de superposition, comme on le voit pour le PAUSED message dans l'image 1.)

L'action lors du clic sur un lien est paramétrable. L'action par défaut pour un file: lien avec un #position suffixe est d'ouvrir le fichier dans un éditeur de texte.

Représentation interne structurée : Les éléments suivants sont tous représentés dans la structure interne du nœud :les commandes, les invites, les lignes d'entrée, les sorties normales et d'erreur, les onglets et la préservation de la structure si vous "enregistrez au format HTML". Le fichier HTML est compatible avec XML, vous pouvez donc utiliser des outils XML pour rechercher ou transformer la sortie. La commande domterm view-saved ouvre un fichier HTML enregistré d'une manière qui permet le pliage des commandes (les boutons afficher/masquer sont actifs) et la redistribution lors du redimensionnement de la fenêtre.

Jolie impression de style Lisp intégrée : Vous pouvez inclure des directives d'impression jolie (par exemple, le regroupement) dans la sortie de sorte que les sauts de ligne soient recalculés lors du redimensionnement de la fenêtre. Voir mon article Dynamique jolie-impression dans DomTerm pour une discussion plus approfondie.

Édition de ligne intégrée de base avec historique (comme GNU readline ):Cela utilise l'éditeur intégré du navigateur, il a donc une excellente gestion de la souris et de la sélection. Vous pouvez basculer entre le mode caractère normal (la plupart des caractères saisis sont envoyés directement au processus); ou en mode ligne (les caractères réguliers sont insérés tandis que les caractères de contrôle provoquent des actions d'édition, avec Enter envoyant la ligne éditée au processus). Le mode par défaut est le mode automatique, où DomTerm bascule entre le mode caractère et le mode ligne selon que le PTY est en brut ou canonique mode.

Un téléavertisseur intégré (comme un less simplifié ) :les raccourcis clavier contrôlent le défilement. En "mode de pagination", la sortie s'interrompt après chaque nouvel écran (ou une seule ligne, si vous avancez ligne par ligne). Le mode de pagination est discret et intelligent en ce qui concerne la saisie de l'utilisateur, vous pouvez donc (si vous le souhaitez) l'exécuter sans qu'il n'interfère avec les programmes interactifs.

Multiplexage et sessions

Onglets et mosaïque : Non seulement vous pouvez créer plusieurs onglets de terminal, mais vous pouvez également les mosaïquer. Vous pouvez utiliser la souris ou un raccourci clavier pour vous déplacer entre les volets et les onglets, ainsi que pour en créer de nouveaux. Ils peuvent être réarrangés et redimensionnés avec la souris. Ceci est implémenté à l'aide de la bibliothèque JavaScript GoldenLayout. L'image 1 montre une fenêtre à deux volets. Celui du haut a deux onglets, dont un exécutant Midnight Commander; le volet inférieur affiche domterm help sortie au format HTML. Cependant, sur Atom, nous utilisons à la place ses vignettes et onglets déplaçables intégrés ; vous pouvez le voir sur l'image 2.

Se détacher et se rattacher aux sessions : DomTerm prend en charge l'arrangement des sessions, similaire à tmux et GNU screen . Vous pouvez même attacher plusieurs fenêtres ou volets à la même session. Cela prend en charge le partage de session multi-utilisateurs et les connexions à distance. (Pour des raisons de sécurité, toutes les sessions du même serveur doivent pouvoir lire un socket de domaine Unix et un fichier local contenant une clé aléatoire. Cette restriction sera levée lorsque nous aurons une bonne histoire d'accès à distance sûre.)

Le domterm commande est aussi comme tmux ou GNU screen qui dispose de plusieurs options pour contrôler ou démarrer un serveur qui gère une ou plusieurs sessions. La principale différence est que, s'il n'est pas déjà exécuté sous DomTerm, le domterm La commande crée une nouvelle fenêtre de niveau supérieur, plutôt que de s'exécuter dans le terminal existant.

Le domterm La commande a un certain nombre de sous-commandes, similaires à tmux ou git . Certaines sous-commandes créent des fenêtres ou des sessions. D'autres (comme "l'impression" d'une image) ne fonctionnent que dans une session DomTerm existante.

La commande domterm browse ouvre une fenêtre ou un volet pour parcourir une URL spécifiée, comme lors de la navigation dans la documentation.

Obtenir et installer DomTerm

DomTerm est disponible depuis son référentiel GitHub. Actuellement, il n'y a pas de packages prédéfinis, mais il existe des instructions détaillées. Tous les prérequis sont disponibles sur Fedora 27, ce qui le rend particulièrement facile à construire.


Linux
  1. Un guide du terminal Linux pour les débutants

  2. Copier des fichiers dans le terminal Linux

  3. Renommer un fichier dans le terminal Linux

  4. Déplacer des fichiers dans le terminal Linux

  5. Une introduction à Udev :le sous-système Linux pour la gestion des événements de périphérique

Introduction au système de fichiers Linux

Une introduction rapide au système de fichiers Linux pour les utilisateurs de Windows.

Ajout d'un émulateur de terminal supplémentaire sous Linux

Top 8 des émulateurs de terminaux pour Linux [en 2021]

Quatre navigateurs Web pour la ligne de commande Linux

Les 30 meilleures consoles d'émulation de jeu pour système Linux