Terminal
Das Kernproblem jedes Terminals: In jeder anderen Anwendung kopiert Strg+C, im Terminal sendet es SIGINT. tessera löst das über den Selektionszustand statt über einen Modus, den man vergisst.
Zwischenablage
| Markierung aktiv | keine Markierung | |
|---|---|---|
| Strg+C | kopieren, Markierung aufheben, kein SIGINT | 0x03 |
| Strg+Umschalt+C | kopieren | nichts — nie SIGINT |
| Cmd+C | kopieren | nichts — nie SIGINT |
| Strg+A | 0x01 (Zeilenanfang) | 0x01 |
| Esc | Markierung aufheben, kein Byte | 0x1b |
Rechtsklick fügt ein — wie in PuTTY. Umschalt+Rechtsklick öffnet das Kontextmenü, damit es nicht unerreichbar wird. Wahlweise auch PuTTY-Vollstil: mit Markierung kopieren, ohne einfügen. Einmal drücken kopiert, zweimal bricht ab.
Drei Modi stehen zur Wahl: smart (Vorgabe), klassisch und macOS-Stil.
Kopiert wird ohne Rand. Ein Terminal hat keine Zeilenenden, sondern Zellen — wer eine Zeile markiert, markiert die Auffüllung bis zum rechten Rand mit. tessera schneidet sie weg: Leerraum am Zeilenende fällt immer, leere Zeilen am Anfang und am Ende des Ausschnitts ebenfalls. Bei einer einzelnen Zeile fällt auch der Leerraum davor weg — dort ist er ein Griff daneben und kein Teil des Textes. Bei mehreren Zeilen bleibt die Einrückung stehen: ein Block, dem nur die erste Zeile ausgerückt wird, ist beim Einfügen kaputt. Das gilt für jeden Weg in die Zwischenablage, auch für „Alles kopieren“.
Was aus dem Bild läuft, bleibt markiert. Wer mit gedrückter Maustaste zieht und dabei scrollt, hält den Anfang der Markierung fest — er hängt an seiner Pufferzeile und nicht an einem Punkt auf dem Schirm. Ohne das wanderte der Anfang mit dem Ausschnitt nach unten, und die Zeilen, die oben herauslaufen, fielen aus der Markierung heraus. Man merkt es erst beim Einfügen, und dann fehlt genau der Teil, den man sehen wollte.
Kürzel, die readline gehören, bleiben bei readline. Strg+A, Strg+K und Strg+U werden nicht umbelegt. Wer in der Shell arbeitet, vermisst kill-line sofort. Neue Kürzel liegen auf Strg+Umschalt. Strg+V ist die Ausnahme — unter Windows erwartet dort jeder das Einfügen.
Eingefügter Text wird gefiltert
Steuerzeichen und ESC-Sequenzen raus, Zeilenenden vereinheitlicht. Bei mehreren Zeilen ohne Bracketed Paste kommt eine Rückfrage mit Vorschau: Was hier ankommt, wird gleich von einer Shell ausgeführt.
Paste-Injection ist ein realer Angriffsweg, kein theoretischer. Eine kopierte Zeile von einer Webseite kann ein Zeilenende und einen zweiten Befehl enthalten, den man nie gesehen hat.
Suche im Puffer
Strg+Umschalt+F. Enter blättert vorwärts, Umschalt+Enter zurück, Esc schließt — wie in jedem Editor. Auf Wunsch als regulärer Ausdruck.
Nicht auf Strg+F: Das ist in readline „ein Zeichen nach rechts“ und wird von jedem gebraucht, der ohne Pfeiltasten arbeitet.
Der Puffer und clear
Der Puffer hält 10.000 Zeilen: den Bildschirm und alles, was oben
herausgelaufen ist. clear räumt beides weg — den
Bildschirm und die Zeilen darüber.
Das Aufräumen macht tessera selbst, statt es der Terminalkomponente zu überlassen. Die kürzt zwar richtig, vergibt danach aber falsche Zeilennummern: Jede Zeile, die den Löschvorgang übersteht, liegt für sie weiter unten, als sie steht. Sichtbar wurde das beim Markieren — man zieht mit der Maus, und es passiert nichts; Strg+C kopiert nichts oder die falsche Zeile, und zwar bis zum nächsten Tab.
Der Mitschnitt bleibt roh. Der Eingriff betrifft nur die Anzeige. In die Mitschnittdatei geht, was die Gegenstelle geschickt hat.
Sitzungsmitschnitt
Auf Wunsch schreibt tessera jede Sitzung in eine Datei — eine je Host und Zeitpunkt. Aufgezeichnet wird nur die Ausgabe der Gegenstelle, ohne Steuersequenzen.
Eingaben mitzuschreiben hieße, ein Passwort in einer Datei zu haben, das sonst nirgends steht. Das steht auch in der Kopfzeile jeder Datei, damit man es beim Lesen nicht raten muss.
Als anderer Benutzer weiterarbeiten
Strg+Umschalt+U holt die Benutzerliste
vom Host und wechselt. Nicht sudo -u X vor jeden
Befehl, sondern eine Untershell: Danach läuft alles als dieser
Benutzer, bis man zurückgeht.
Die Liste kommt aus getent passwd, mit
/etc/passwd als Rückfall — getent kennt auch Benutzer aus
LDAP und NIS. Gezeigt werden nur Konten, in denen sich arbeiten lässt:
nologin und /bin/false fallen weg,
Systemkonten unter UID 1000 ebenfalls. root ist die
Ausnahme und steht oben.
Wie gewechselt wird, steht in den Einstellungen:
sudo -u NAME -i (Vorgabe, mit der Umgebung des Ziels),
sudo -u NAME -s oder su - NAME für Systeme
ohne sudo.
Solange gewechselt wurde, steht ein Band über dem Terminal:
deploy › root › postgres. Es nimmt Platz weg, statt sich
darüberzulegen — als wer man arbeitet, ist nichts, was einen Moment
später wieder verschwinden darf. Ein Klick geht eine Ebene zurück, einer
wechselt weiter.
„Laut tessera“ ist wörtlich gemeint. Der Client
weiß nur, was er selbst geschickt hat. Wer im Terminal von Hand
exit tippt, steht danach woanders, als das Band
behauptet. Deshalb lässt es sich mit einem Klick zurücksetzen, ohne
dass dabei etwas gesendet wird.
Rechtsklick auf den Tab
Der Tab ist die einzige Stelle, an der Host und laufende Sitzung zugleich bekannt sind. Deshalb hängt dort, wofür man sonst zurück in die Hostliste müsste:
- Schlüssel eintragen — ohne die Sitzung zu verlassen.
- Benutzer wechseln als Untermenü: root und die Konten des Hosts mit einem Klick.
- Dateien in diesem Ordner (neuer Tab) — der Dateibrowser öffnet als eigener Reiter, dort wo das Terminal gerade steht. Das Terminal bleibt, wo es ist.
- Dateien daneben — derselbe Browser als zweite Spalte, wahlweise mit Terminal folgen.
- Snippet-Panel, Host bearbeiten, neu verbinden, Tabs schließen.
Umschalt+Rechtsklick öffnet am Tab dasselbe Zwischenablagemenü wie im Terminal darunter. Wer sich das für „Kopieren, Einfügen“ angewöhnt hat, trifft damit auch mal die Leiste — und dort etwas anderes zu tun wäre die Art Überraschung, die Text an die falsche Stelle bringt.
Auf einem Gerät ohne Tastatur
Alles auf dieser Seite setzt Tasten voraus, die eine Bildschirmtastatur nicht hat: Esc, Tab, die Pfeile, Strg. Auf dem Telefon liefert sie die Tastenleiste über der Tastatur nach, und Strg wird dort vorgemerkt statt gehalten.
Markiert wird mit langem Drücken — und danach hängen an beiden Enden der Markierung Griffe, mit denen sie sich größer und kleiner ziehen lässt. Ohne sie bliebe es bei dem einen Wort, das das lange Drücken erwischt hat: Umschalt zum Erweitern gibt es dort nicht, und eine Maus auch nicht. Kopiert wird über das Menü der Tastenleiste.
Was hier auf einem Kürzel liegt — Suche, Palette, Snippets, Benutzerwechsel —, steht dort im Menü der Leiste. Der ganze Ablauf steht unter Auf dem Telefon.
Schrift
tessera benennt keine Schriftfamilie, die es nicht mitliefert. Das ist kein Schönheitsthema: Eine benannte Familie, die fehlt, lässt Flutter je Schnitt unterschiedlich ersetzen. Fette oder invertierte Stellen bekommen dann eine andere Schrift als der Rest — und damit andere Zeichenbreiten. Ein Terminal, in dem nicht jede Zelle gleich breit ist, ist kaputt.
Es entscheidet die Ersatzkette: unter Windows Cascadia Mono, sonst Consolas, Menlo oder DejaVu Sans Mono.