Tablet als zusätzliches Display einrichten

In vielen Fällen kann es durchaus sinnvoll sein, ein Tablet oder Handy als zusätzliches Display einzurichten. Wenn der eigentliche Rechner, der Ereignisse über Schnittstellen verarbeitet, die ein Tablet nicht besitzt, zu weit vom eigentlichen Geschehen weg steht, ist ein Tablet als tragbarer Monitor von Vorteil. Unter Linux kann man das über VNC realisieren, was vielen von der Fernwartung von Computern bekannt sein dürfte.

Vorbereitung

Der für die Ausgabe auf Monitore verantwortliche X-Server erkennt i.d.R. automatisch einen zusätzlichen an die Grafikkarte angeschlossenen Monitor. Da das Tablet aber nicht an einen physikalischen Ausgang sondern über Netzwerk angeschlossen wird, müssen wir dem X-Server eine Schnittstelle dafür bereitstellen. Dazu legen wir als Root eine Datei /usr/share/X11/xorg.conf.d/20-virtual.conf mit folgendem Inhalt an:

Section "Device"
 Identifier "intelgpu0"
 Driver "intel"
 Option "VirtualHeads" "1"
EndSection

Für AMD- oder Nvidia-Grafikkarten müssen die Einträge Identifier und Driver entsprechend angepasst werden. Danach muss der X-Server bzw. der verwendete Display-Manager neu gestartet werden. Also loggt man sich von der grafischen Oberfläche aus, wechselt mit STRG+ALT+F1 auf die erste virtuelle Konsole, meldet sich dort als Root an und startet den Displaymanager neu. Im Falle von lightdm durch den Befehl:

systemctl restart lightdm.service

Danach mit STRG+ALT+F7 wieder auf das grafische Terminal wechseln und einloggen.

Auf dem Hostrechner müssen noch, falls nicht schon vorhanden, die folgenden Pakete installiert werden:

sudo apt install x11vnc arandr x11-xserver-utils

Auf dem Client-Rechner - also dem Tablet - muss ein geeigneter VNC-Viewer installiert sein. Für Linux empfehle ich xtightvncviewer, der in den Paketquellen enthalten sein sollte. Diesen Viewer gibt es auch für Windows und MAC. Für Android hat sich bVNC bewährt.

virtuelles Display anlegen

Zuerst muss eine neue Modeline für das anzulegende virtuelle Display dem X-Server bekannt gemacht werden. Für eine Auflösung von 800x600 bei 60Hz sähe der zugehörige Befehl so aus:

gtf 800 600 60 | sed '3q;d' | sed 's/Modeline//g' | xargs xrandr --newmode

Dann muss diese Modeline dem virtuellen Display VIRTUAL1 zugeordnet werden.

gtf 800 600 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --addmode VIRTUAL1

Jetzt platzieren wir das virtuelle Dsipaly rechts vom physikalischen Display - im Beispiel eDP1

gtf 800 600 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --output VIRTUAL1 --right-of eDP1 --mode

VNC-Server starten

Beim Start des VNC-Servers geben wir ihm als Parameter für den Bildausschnitt die Auflösung des virtuellen Displays und die Breite des physikalischen Displays - im Beispiel 1920 - mit.

x11vnc -clip 800x600+1920+0

VNC-Viewer auf dem Client-Rechner starten

Auf dem Client-Rechner muss nun noch der VNC-Viewer gestartet werden. Dieser benötigt zum Verbindungsaufbau den Hostnamen oder die IP-Adresse des VNC-Servers.

xtightvnc --fullscreen 192.168.1.114

Ab jetzt können vom Host-Rechner einzelne Fenster oder ganze Anwendungen auf das Tablet geschoben werden.

Vereinfachung durch ein Script

Da sich niemand die einzelnen Schritte und Befehle merken kann und weil ich oft mit Geräten unterschiedlicher Auflösung als Zweit-Display arbeite, habe ich ein Script erstellt, welches die Schritte nacheinander ausführt und nach Beenden des Viewers auf dem Client auch das virtuelle Display auf dem Host-Rechner abschaltet. Dem Script kann die Auflösung des virtuellen Displays übergeben werden. Geschieht dies nicht, wird eine Default-Auflösung angewandt. Dadurch kann für die verschiedensten zur Anwendung kommenden Geräte jeweils ein Starter für das Script auf der GUI angelegt werden. Das Script kann hier heruntergeladen werden. Einfach in ein Verzeichnis Eurer Wahl kopieren und ausführbar machen. Vorzugsweise sollte dieses Verzeichnis in PATH enthalten sein.

Bei Fehlern, Fragen oder Anregungen schreibt eine Mail.

Sicherheitsaspekte

Die vorgeschlagene Lösung verzichtet bewusst auf sämtliche Sicherheitsfeatures wie Verschlüsselung der Datenübertragung oder Authentifizierung am Server, da wir hier im eigenen Netzwerk arbeiten. Soll der Bildschirminhalt über das Internet freigegeben werden, müssen alle Fragen der Sicherheit neu überdacht werden.