GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Einführung in den Terminalemulator DomTerm für Linux

DomTerm ist ein moderner Terminalemulator, der eine Browser-Engine als „GUI-Toolkit“ verwendet. Dies ermöglicht einige nette Funktionen, wie z. B. einbettbare Grafiken und Links, HTML-Rich-Text und faltbare Befehle (Anzeigen/Ausblenden). Ansonsten sieht es aus und fühlt sich an wie ein funktionsreicher, eigenständiger Terminalemulator mit ausgezeichneter xterm-Kompatibilität (einschließlich Maushandhabung und 24-Bit-Farbe) und angemessenem "Chrome" (Menüs). Darüber hinaus gibt es eine integrierte Unterstützung für die Sitzungsverwaltung und Unterfenster (wie in tmux und GNU screen ), grundlegende Eingabebearbeitung (wie in readline ) und Paging (wie in less ).

Im Folgenden werden wir uns diese Funktionen genauer ansehen. Wir gehen davon aus, dass Sie domterm haben installiert (springen Sie zum Ende dieses Artikels, wenn Sie DomTerm abrufen und erstellen müssen). Zunächst erhalten Sie hier jedoch einen kurzen Überblick über die Technologie.

Frontend vs. Backend

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Der größte Teil von DomTerm ist in JavaScript geschrieben und wird in einer Browser-Engine ausgeführt. Dies kann ein Desktop-Webbrowser wie Chrome oder Firefox (siehe Bild 3) oder ein eingebetteter Browser sein. Die Verwendung eines allgemeinen Webbrowsers funktioniert gut, aber die Benutzererfahrung ist nicht so schön (da die Menüs für das allgemeine Surfen und nicht für einen Terminalemulator ausgelegt sind) und das Sicherheitsmodell stört, sodass die Verwendung eines eingebetteten Browsers schöner ist .

Folgendes wird derzeit unterstützt:

  • qtdomterm , das das Qt-Toolkit und QtWebEngine verwendet
  • Ein Electron Einbettung (siehe Bild 1)
  • atom-domterm führt DomTerm als Paket im Atom-Texteditor aus (der ebenfalls auf Electron basiert) und integriert sich in das Atom-Fenstersystem (siehe Bild 2)
  • Ein Wrapper für die WebEngine von JavaFX , was für in Java geschriebenen Code nützlich ist (siehe Bild 4)
  • Früher verwendete das bevorzugte Frontend Firefox-XUL, aber Mozilla hat XUL inzwischen fallen gelassen

Derzeit ist das Electron-Frontend wahrscheinlich die schönste Option, dicht gefolgt vom Qt-Frontend. Wenn Sie Atom verwenden, atom-domterm funktioniert ziemlich gut.

Der Backend-Server ist in C geschrieben. Er verwaltet Pseudo-Terminals (PTYs) und Sitzungen. Es ist auch ein HTTP-Server, der das JavaScript und andere Dateien für das Frontend bereitstellt. Der domterm Der Befehl startet Terminaljobs und führt andere Anforderungen aus. Wenn kein Server läuft, domterm dämonisiert sich. Die Kommunikation zwischen dem Backend und dem Server erfolgt normalerweise über WebSockets (mit libwebsockets auf dem Server). Die JavaFX-Einbettung verwendet jedoch weder WebSockets noch den DomTerm-Server; Stattdessen kommunizieren Java-Anwendungen direkt über die Java-JavaScript-Bridge.

Ein solider xterm-kompatibler Terminalemulator

DomTerm sieht aus und fühlt sich an wie ein moderner Terminal-Emulator. Es verarbeitet Mausereignisse, 24-Bit-Farbe, Unicode, Zeichen mit doppelter Breite (CJK) und Eingabemethoden. DomTerm leistet sehr gute Arbeit in der vttest-Testsuite.

Zu den ungewöhnlichen Funktionen gehören:

Schaltflächen ein-/ausblenden ("Falten"): Die kleinen Dreiecke (in Bild 2 oben zu sehen) sind Schaltflächen, die die entsprechende Ausgabe ein-/ausblenden. Um die Schaltflächen zu erstellen, fügen Sie einfach bestimmte Escape-Sequenzen in den Eingabeaufforderungstext ein.

Mausklick-Unterstützung für readline und ähnliche Eingabe-Editoren: Wenn Sie in den (gelben) Eingabebereich klicken, sendet DomTerm die richtige Folge von Pfeiltasten an die Anwendung. (Dies wird durch Escape-Sequenzen in der Eingabeaufforderung aktiviert; Sie können es auch mit Alt+Klick erzwingen.)

Formatieren Sie das Terminal mit CSS: Dies geschieht normalerweise in ~/.domterm/settings.ini , die beim Speichern automatisch neu geladen wird. Beispielsweise wurden in Bild 2 Endgeräte-spezifische Hintergrundfarben gesetzt.

Eine bessere REPL-Konsole

Ein klassischer Terminalemulator arbeitet mit rechteckigen Gittern aus Zeichenzellen. Dies funktioniert für eine REPL (Befehlsshell), ist aber nicht ideal. Hier sind einige DomTerm-Funktionen, die für REPLs nützlich sind, die normalerweise nicht in Terminal-Emulatoren zu finden sind:

Ein Befehl kann ein Bild, eine Grafik, eine mathematische Formel oder eine Reihe anklickbarer Links "drucken": Eine Anwendung kann eine Escape-Sequenz senden, die fast jeden beliebigen HTML-Code enthält. (Der HTML-Code wird bereinigt, um JavaScript und andere gefährliche Funktionen zu entfernen.) 

Bild 3 zeigt ein Fragment aus einem gnuplot Sitzung. Gnuplot (2.1 oder höher) unterstützt domterm als Terminaltyp. Die grafische Ausgabe wird in ein SVG-Bild konvertiert, das dann auf dem Terminal gedruckt wird. In meinem Blog-Beitrag Gnuplot-Anzeige auf DomTerm finden Sie weitere Informationen dazu.

Die Kawa-Sprache verfügt über eine Bibliothek zum Erstellen und Transformieren geometrischer Bildwerte. Wenn Sie einen solchen Bildwert auf einem DomTerm-Terminal drucken, wird das Bild in SVG konvertiert und in die Ausgabe eingebettet.

Rich-Text in der Ausgabe: Hilfemeldungen sind besser lesbar und sehen mit HTML-Styling besser aus. Der untere Bereich von Bild 1 zeigt die Ausgabe von domterm help . (Die Ausgabe ist Klartext, wenn sie nicht unter DomTerm läuft.) Beachten Sie den PAUSED Nachricht vom eingebauten Pager.

Fehlermeldungen können anklickbare Links enthalten: DomTerm erkennt die Syntax filename:line:column: und wandelt es in einen Link um, der die Datei und Zeile in einem konfigurierbaren Texteditor öffnet. (Dies funktioniert für relative Dateinamen, wenn Sie PROMPT_COMMAND verwenden oder ähnlich wie Titelverzeichnisse.)

Ein Compiler kann erkennen, dass er unter DomTerm läuft und direkt Dateiverknüpfungen in einer Escape-Sequenz ausgeben. Dies ist robuster als die Abhängigkeit vom Musterabgleich von DomTerm, da es Leerzeichen und andere Sonderzeichen verarbeitet und nicht von der Verzeichnisverfolgung abhängt. In Bild 4 sehen Sie Fehlermeldungen des Kawa-Compilers. Wenn Sie den Mauszeiger über die Dateiposition bewegen, wird sie unterstrichen und die Datei file: URL wird im atom-domterm angezeigt Nachrichtenbereich (unten im Fenster). (Wenn atom-domterm nicht verwendet wird , werden solche Meldungen in einem Overlay-Feld angezeigt, wie es für PAUSED zu sehen ist Nachricht in Bild 1.)

Die Aktion beim Klicken auf einen Link ist konfigurierbar. Die Standardaktion für eine file: Link mit einem #position Suffix ist, die Datei in einem Texteditor zu öffnen.

Strukturierte interne Darstellung: Die folgenden Elemente werden alle in der internen Knotenstruktur dargestellt:Befehle, Eingabeaufforderungen, Eingabezeilen, normale und Fehlerausgaben, Registerkarten und die Beibehaltung der Struktur, wenn Sie "Als HTML speichern". Die HTML-Datei ist mit XML kompatibel, sodass Sie XML-Tools verwenden können, um die Ausgabe zu durchsuchen oder umzuwandeln. Der Befehl domterm view-saved öffnet eine gespeicherte HTML-Datei so, dass das Befehlsfalten (Ein-/Ausblenden-Schaltflächen sind aktiv) und ein Reflow bei der Größenänderung des Fensters aktiviert werden.

Eingebauter hübscher Druck im Lisp-Stil: Sie können Pretty-Printing-Anweisungen (z. B. Gruppierung) in die Ausgabe einfügen, sodass Zeilenumbrüche bei der Größenänderung des Fensters neu berechnet werden. Siehe meinen Artikel Dynamic Pretty-Printing in DomTerm für eine tiefere Diskussion.

Grundlegende integrierte Zeilenbearbeitung mit Verlauf (wie GNU readline ):Dies verwendet den integrierten Editor des Browsers, sodass es eine hervorragende Maus- und Auswahlhandhabung bietet. Sie können zwischen dem normalen Zeichenmodus wechseln (die meisten eingegebenen Zeichen werden direkt an den Prozess gesendet); oder Zeilenmodus (normale Zeichen werden eingefügt, während Steuerzeichen Bearbeitungsaktionen auslösen, wobei Enter die bearbeitete Zeile an den Prozess sendet). Die Standardeinstellung ist der automatische Modus, in dem DomTerm zwischen Zeichenmodus und Zeilenmodus umschaltet, je nachdem, ob der PTY in raw oder kanonisch ist Modus.

Ein eingebauter Pager (wie ein vereinfachtes less ):Tastenkombinationen steuern das Scrollen. Im "Paging-Modus" pausiert die Ausgabe nach jedem neuen Bildschirm (oder einzelner Zeile, wenn Sie zeilenweise vorgehen). Der Paging-Modus ist unauffällig und intelligent in Bezug auf Benutzereingaben, sodass Sie ihn (wenn Sie möchten) ausführen können, ohne interaktive Programme zu stören.

Multiplexing und Sitzungen

Tabs und Kacheln: Sie können nicht nur mehrere Terminal-Registerkarten erstellen, sondern sie auch kacheln. Sie können entweder die Maus oder eine Tastenkombination verwenden, um zwischen Bereichen und Tabs zu wechseln und neue zu erstellen. Sie können mit der Maus neu angeordnet und in der Größe verändert werden. Dies wird mithilfe der GoldenLayout-JavaScript-Bibliothek implementiert. Bild 1 zeigt ein Fenster mit zwei Scheiben. Die obere hat zwei Registerkarten, von denen eine Midnight Commander ausführt; im unteren Bereich wird domterm help angezeigt Ausgabe als HTML. Auf Atom verwenden wir jedoch stattdessen die integrierten ziehbaren Kacheln und Registerkarten; Sie können dies in Bild 2 sehen.

Trennen und erneutes Verbinden mit Sitzungen: DomTerm unterstützt die Anordnung von Sitzungen, ähnlich wie tmux und GNU screen . Sie können sogar mehrere Fenster oder Bereiche an dieselbe Sitzung anhängen. Dies unterstützt die gemeinsame Nutzung von Sitzungen mit mehreren Benutzern und Remoteverbindungen. (Aus Sicherheitsgründen müssen alle Sitzungen desselben Servers in der Lage sein, einen Unix-Domain-Socket und eine lokale Datei mit einem zufälligen Schlüssel zu lesen. Diese Einschränkung wird aufgehoben, wenn wir eine gute, sichere Fernzugriffsgeschichte haben.)

Die domterm Befehl ist auch wie tmux oder GNU screen , dass es mehrere Optionen zum Steuern oder Starten eines Servers hat, der eine oder mehrere Sitzungen verwaltet. Der Hauptunterschied besteht darin, dass, wenn es nicht bereits unter DomTerm läuft, das domterm Der Befehl erstellt ein neues Fenster der obersten Ebene, anstatt im vorhandenen Terminal ausgeführt zu werden.

Der domterm Der Befehl hat eine Reihe von Unterbefehlen, ähnlich wie tmux oder git . Einige Unterbefehle erstellen Fenster oder Sitzungen. Andere (wie das "Drucken" eines Bildes) funktionieren nur innerhalb einer bestehenden DomTerm-Sitzung.

Der Befehl domterm browse öffnet ein Fenster oder einen Bereich zum Durchsuchen einer bestimmten URL, z. B. beim Durchsuchen der Dokumentation.

DomTerm abrufen und installieren

DomTerm ist in seinem GitHub-Repository verfügbar. Derzeit gibt es keine vorgefertigten Pakete, aber es gibt detaillierte Anweisungen. Alle Voraussetzungen sind auf Fedora 27 vorhanden, was das Erstellen besonders einfach macht.


Linux
  1. Eine Anleitung zum Linux-Terminal für Anfänger

  2. Kopieren Sie Dateien im Linux-Terminal

  3. 8 Tipps für die Linux-Kommandozeile

  4. Einführung in den Linux-Befehl chown

  5. Was ist Ihr Lieblings-Linux-Terminal-Emulator?

Einführung in das Linux-Dateisystem

Eine schnelle Einführung in das Linux-Dateisystem für Windows-Benutzer.

Hinzufügen eines zusätzlichen Terminalemulators in Linux

Top 8 Terminal-Emulatoren für Linux [in 2021]

Vier Webbrowser für die Linux-Befehlszeile

Die 30 besten Spieleemulatorkonsolen für Linux-Systeme