xtermjs – einfacher Terminal

Java ist eine Insel. Trotzdem muss man sich mit der Programmiersprache beschäftigen. Auf der Suche nach einer Möglichkeit, Terminaldaten auf einer Website darzustellen, stieß ich auf xterm.js

Tolles Beispiel dafür, eine einfache Sache möglichst kompliziert zu machen. xterm.js für sich, ist fast wertfrei. Es ist ein Render – es kann Text dargestellt werden und mit Javascript eine gewisse Logik programmiert werden. Nur im Zusammenspiel mit Anwendungen wie Node.js und socket.io kann es zumindest einfache Bash Befehle wiedergeben. Ein hoher Aufwand, weshalb ich das Projekt verworfen habe.

xterm auf Homepage

Für einfache Übungen aber ganz interessant. Als Demo bleibt es Online (Link). Im Netz finden sich einige Artikel, die etwas über die Programmierung erzählen – ich habe festgestellt, das sich die Syntax im Lauf der Jahre geändert hat. Bezüglich Instanzierung der Klasse und Referenzierung ist das Handbuch (Link) zu Rate zu ziehen.

Zum Code: Das Javascript, das den Terminal auf der Website darstellt, kann in simplen HTML Code aufgerufen werden. Zum Beispiel

Listing HTML Code

In Zeile 5 und 9 laden wir die Scripte. Unser Script ist term.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var term = new Terminal({theme: {
    background: '#808080',
    color: '#8000ff'},
    cursorBlink: 'true'});
 term.open(document.getElementById('terminal'));
 term.writeln('HALSYSTEM Term \r\n');
 term.write("==> ");
 var input = "";
 term.onData(function (data, ev) {
    const code = data.charCodeAt(0);
    if (code == 13) {
       term.write('\n\r');
       if (input == 'Test') {
         term.writeln('ok');
         }
         input = "";
         } else {
       term.write(data);
       input += data;
       };                                   
 });

Es ist zu erkennen, das es ein simples Anzeigen von Terminaldaten ist und einfache if then Logik angewendet wird. Es lässt sich so zumindest etwas spielen. Bedeutet aber auch, das programmiert werden muss. Das Verhalten bei „Enter“ oder Eingabe von Triggerworten kann und muss programmiert werden. Viel Spass.