Auf dem Telefon

Eine Oberfläche, nicht zwei. Was sich zwischen einem 34-Zoll-Monitor und einem Telefon im Hochformat unterscheidet, sind genau zwei Fragen — und die stehen an zwei Stellen im Code, nicht an dreißig.

Zwei Fragen, zwei Stellen

Frage Woran es hängt Was daraus folgt
Wie viel Platz ist da? allein an der verfügbaren Breite Drei Klassen, Schwellen bei 600 und 900. Ab 900 stehen Hostliste und Sitzung nebeneinander, darunter zieht sich die Liste in die Schublade zurück.
Womit wird bedient? an der Plattform Trefferflächen, langes Drücken statt Rechtsklick, und ob die Tastenleiste über der Bildschirmtastatur erscheint.

Die beiden Fragen sehen ähnlich aus und sind es nicht. Ein schmales Desktop-Fenster bekommt dasselbe Layout wie ein Tablet im Hochformat — der Platz ist derselbe. Aber es will keine Daumenflächen. Umgekehrt ist ein Tablet quer so breit wie ein Notebook und braucht sie trotzdem.

Der Sprung auf zwei Spalten liegt bei 900 und nicht bei den 840 aus Material 3. Die Hostliste braucht 300, das Terminal mindestens 60 Spalten — bei 840 blieben 540 übrig, und 60 Spalten sind rund 580. Eine Zahl, die um 40 danebenliegt, kostet eine abgeschnittene Terminalzeile.

Die Tastenleiste

Eine Bildschirmtastatur hat kein Esc, kein Tab, keine Pfeile und keine Zusatztasten. Ohne sie kommt man in vi nicht aus dem Einfügemodus heraus, bricht keinen laufenden Befehl ab und vervollständigt keinen Pfad. Ein Terminal ohne diese Leiste ist auf einem Telefon eine Textanzeige.

Was darauf liegt, in dieser Reihenfolge:

Die Leiste sitzt über der Tastatur, nicht am unteren Bildschirmrand: Ist die Tastatur da, steht sie direkt darüber; ist sie weg, sitzt die Leiste unten.

Warum Vormerkung und nicht Halten

Ein Finger ist entweder auf der Leiste oder auf dem Buchstaben — eine Taste gedrückt zu halten geht nicht. Deshalb merkt die Leiste vor: Ein Tipp auf strg färbt sie ein, der nächste Buchstabe geht als Strg+Buchstabe hinaus, danach ist die Vormerkung weg. Genauso machen es Termux und Blink; wer von dort kommt, muss nichts umlernen.

Was dabei entsteht
strg + c   →  0x03   Abbruch
strg + d   →  0x04   Dateiende
strg + 2   →  0x00   NUL -- auf einer Bildschirmtastatur sonst unerreichbar
alt  + f   →  ESC f  ein Wort vorwärts (readline)

Die Zuordnung ist die der VT100: Strg löscht die oberen zwei Bit. Die Ziffern stehen dabei nicht für sich selbst, sondern für die Zeichen, die auf einer amerikanischen Tastatur mit Umschalt auf ihnen liegen. Alt ist die ESC-Vorsilbe — so erwartet es readline, und so schickt es jedes Terminal seit der VT100.

Diese Umsetzung ist die Stelle, an der aus einem „c“ ein 0x03 wird. Ein Fehler darin heißt, dass strg+c einen laufenden Befehl nicht mehr abbricht. Sie steht deshalb als reine Funktion unter Test — nicht unter einer Bildschirmtastatur.

Alles, was länger als ein Zeichen ist, bleibt unverändert: Mausmeldungen, Escape-Folgen der Pfeiltasten und eingefügte Blöcke. Ein Strg davor wäre in keinem dieser Fälle gemeint. Bei einer Pfeiltaste wird die Vormerkung vorher gelöscht und der Wert mitgegeben — sonst hinge ein vorgemerktes Alt ein zweites ESC vor die ohnehin schon mit ESC beginnende Folge.

Markieren mit dem Finger

Langes Drücken markiert das Wort darunter. Das ist der Anfang und selten das Ziel: Ein Pfad, eine Fehlermeldung, ein Fingerabdruck reichen über mehrere Wörter. Auf dem Desktop erweitert man mit Umschalt oder zieht mit der Maus nach — auf einem Telefon gibt es beides nicht.

Deshalb hängen an beiden Enden der Markierung Griffe. Der eine sitzt links unter ihrem Anfang, der andere rechts unter ihrem Ende; wer sie zieht, verschiebt genau dieses Ende. Über das andere hinaus geht es nicht: Der Zug wird dann ignoriert, statt die Markierung zu verdrehen.

Kopiert wird über das Menü der Tastenleiste. Was dabei in der Zwischenablage landet, ist beschnitten — Leerraum am Zeilenende stammt aus der Auffüllung des Terminals und nicht aus dem Text. Die Regel steht unter Zwischenablage.

Die Griffe liegen über dem Terminal, nicht darin. Sie fangen genau die beiden Punkte ab, an denen sie sitzen. Überall sonst bleibt die Berührung, was sie war: Scrollen, Tippen, langes Drücken.

Suche, Befehlspalette, Snippets und Benutzerwechsel liegen auf dem Desktop auf Tastenkürzeln. Auf einem Telefon gibt es keine Tastenkürzel — ohne einen sichtbaren Weg wären diese Funktionen dort schlicht nicht erreichbar. Sie stehen deshalb im Menü der Tastenleiste:

Kein Aufziehen mit zwei Fingern. Dieselbe Geste ist im Terminal das Scrollen und das Markieren. Wer sie überlädt, bekommt mal das eine und mal das andere — deshalb liegt das Zoomen im Menü.

Ziehen erst nach langem Drücken

Hosts werden in Gruppen gezogen. Auf dem Desktop greift das Ziehen sofort, auf dem Telefon erst nach langem Drücken: Dort ist Wischen das Scrollen, und ein sofort greifender Zug machte die Liste unbenutzbar.

Dateien

Der lokale Dateibrowser sieht auf dem Telefon nur den Sandbox-Ordner der App. Das ist keine Einschränkung, die sich abschalten ließe, sondern die Regel des Betriebssystems. Der Weg nach draußen führt über zwei Systemdienste:

Process.run gibt es dort nicht, und HOME ist leer — was auf dem Desktop ein Pfad ist, ist hier ein Dienst.

Auf dem iPad braucht jedes Teilen-Blatt einen Ankerpunkt. Ohne ihn beendet iOS die App. Auf dem iPhone fällt es nicht auf, weil das Blatt dort immer von unten kommt — genau deshalb ist es ein Fehler, den man erst spät bemerkt.

Wo die Datenbank liegt

Die lokale Datenbank hält den entschlüsselten Arbeitsstand. Auf dem Telefon liegt sie im Support-Ordner der App und nicht in den Dokumenten, und sie ist von der Sicherung und von der Geräteübertragung ausgenommen:

System Wodurch
Android allowBackup="false" und eigene Regeln für die Datenübernahme; für ältere Versionen zusätzlich eigene Backup-Regeln
iOS der Support-Ordner wird vom iCloud- und iTunes-Backup ausgenommen

Wer das aufhebt, kopiert genau den Klartext zu Google oder Apple, vor dem der Serverteil ihn schützt. Der gesamte Aufwand mit Ende-zu-Ende-Verschlüsselung wäre damit umsonst — nicht angegriffen, sondern umgangen.

Koppeln auf dem Telefon

Der Ablauf ist derselbe wie überall: Kopplungscode hin, sechs Ziffern vergleichen, fertig — siehe Geräte koppeln. Der Code wandert per Zwischenablage oder Teilen-Blatt von einem Gerät zum anderen.

Kamera und QR sind noch nicht eingebaut. Die Kodierung steht bereits und wird gelesen; was fehlt, ist das Scannen. Bis dahin bleibt es beim Einfügen — sicherheitlich macht das keinen Unterschied, denn der Code enthält kein Geheimnis. Der Schutz ist der Ziffernvergleich.

Stand

Plattform Stand
Android verfügbarlive noch wenig geprüft
iOS baut, unsigniert übersetzt auf dem Buildserver; ohne Entwicklerkonto gibt es kein installierbares Paket
System Mindestversion
Android 8.0 (API 26). Zwei Gründe: Der Schlüsselspeicher kann erst ab 6.0 AES-GCM, und die Tonausgabe der Fernsitzung braucht AAudio — das gibt es ab 8.0. Was darunter liegt, bekommt ohnehin keine Sicherheitsaktualisierungen mehr.
iOS 14 — das ist dieselbe Geräteliste wie 13, nämlich iPhone 6s und neuer. Der Sprung kostet also kein Gerät.

Die Android-Fassung gibt es zum Herunterladen — als Prototyp und ohne Store, mit veröffentlichtem Fingerabdruck zum Nachprüfen.