Das Android-Tablet als externen Monitor am Linux-Desktop

Problem ist folgendes:

Man möchte ein vorhandenes Android-Tablet als externen Monitor an seinem Linux-Desktop benutzen.
Dabei ist aber auch jeder andere Rechner, der einen VNC-Client benutzen kann geeignet.
Das Geheimnis liegt darin, auf dem vorhandenen X-Server-Screen ein virtuelles Display zu definieren, dessen Bereich dann von einem VNC-Server im Netzwerk bereitgestellt wird.

Zuerst wollen wir auf dem Host mal den VNC-Server installieren, TightVNC bietet sich da ganz gut an. Darüber hinaus brauchen wir noch x11vnc.

      olly@horus:~ $ sudo apt-get install tightvncserver x11vnc
    

Nun brauchen wir erstmal eine passende modeline. Bevor wir die erzeugen können, ist es sinnvoll die aktuelle Auflösung von seinem Tablet zu kennen. Die ist schnell herausgefunden, indem man mit einem Browser vom Tablet aus die Seite https://whatismyandroidversion.com/ aufruft.

Im Folgenden gehen wir von einer Auflösung von 1440x900 aus!

Jetzt generieren wir die Modeline mittels:

      olly@horus:~ $ gtf 1440 900 60
         # 1440x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 106.47 MHz
         Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
      

Cool! Mit dieser Info im Clipboard machen wir uns an die Definition des virtuellen Monitors!

Dazu benutzen wir xrandr:

        olly@horus:~ $ xrandr --newmode "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
      

Sehr schön. Als nächstes verknüpfen wir den eben hinzugefügten Mode mit einem Display. Wir wollen hier ein virtuelles Display verwenden (vorher sollte man sich aber mittels xrandr vergewissern, dass es vorhanden und unbenutzt ist)

        olly@horus:~ $ xrandr --addmode VIRTUAL1 1440x900_60.00
      

Alles klar, nun definieiren wir noch flott die Position unseres neuen, virtuellen Displays:

        olly@horus:~ $ xrandr --output VIRTUAL1 --mode 1440x900_60.00 --left-of eDP1
      
eDP1 ist mein Laptop-Bildschirm, der muss natürlich entsprechend angepasst werden! Auch diese Info bekommt man, indem man ein simples xrandr ausführt.

So weit, so gut. Als letztes starten wir den VNC-Server

      olly@horus:~ $ x11vnc -clip 1440x900+0+0
      
Hinweis: Wenn man sich den virtuellen Monitor woanders hingeschoben hat (z.B. mittels arandr), dann muss der Wert des -clip-Parameters der aktuellen Position des virtuellen Monitors angepasst werden. Die bekommt man wie folgt raus:
        olly@horus:~ $ xrandr | grep VIRTUAL1
        VIRTUAL1 connected 1440x900+480+1080 (normal left inverted right x axis y axis) 0mm x 0mm
      
In diesem Beispiel müsste der VNC-Server also so gestartet werden:
        olly@horus:~ $ x11vnc -clip 1440x900+480+1080
      

Um es sich einfach zu machen und nicht lange mit den Positionswerten des virtuellen Displays herumfrickeln zu müssen, tuts auch ein simples

        x11vnc -clip $(xrandr | grep VIRTUAL1 | cut -d" " -f3)
      

Nun braucht man auf dem Tablet nur noch den VNC-Client zu starten und an Port 5900 des Servers zu verbinden.
Als VNC-Client für android bietet sich übrigens bVNC Pro ganz gut an, da diese App auch den Cursor des Servers anzeigt!

Hier nocheinmal zur Verdeutlichung der Aufbau des nun aktuellen X-Screens (dem gesamten Desktop, welcher sich über alle 4 Monitore erstreckt):
und die dazu passende Ausgabe von xrandr:

        olly@horus:~ $ xrandr
        Screen 0: minimum 8 x 8, current 5206 x 1980, maximum 32767 x 32767
        eDP1 connected primary 1366x768+1920+516 (normal left inverted right x axis y axis) 340mm x 190mm
           1366x768      60.00*+
        DP1 connected 1920x1080+3286+36 (normal left inverted right x axis y axis) 470mm x 270mm
           1920x1080_60.00  59.96*+
        HDMI1 disconnected (normal left inverted right x axis y axis)
        HDMI2 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 520mm x 290mm
           1920x1080_60.00  59.96 +
        VIRTUAL1 connected 1440x900+480+1080 (normal left inverted right x axis y axis) 0mm x 0mm
           1440x900_60.00  60.00*
        VIRTUAL2 disconnected (normal left inverted right x axis y axis)