Auf der Seite des Pi benötigen wir nur den X-Client. Haben Sie Raspbian mit grafischer Oberfläche installiert, befindet sich schon alles Notwendige an Bord. Für die Lite-Version benötigen Sie den Client separat – das erledigt aber die Installation für unser Beispielprogramm quasi nebenbei.
Die uralte X-Architektur leidet historisch bedingt unter verschiedenen Problemen, insbesondere hinsichtlich Sicherheit und Performance. Moderne Rechner (wie auch der RasPi) enthalten eine leistungsfähige GPU, die das Rendern selbst übernimmt. Das unterläuft allerdings die Ausgabe über das Netz und schränkt uns in diesem Projekt bei der Wahl der Programmbibliotheken etwas ein – die Ausgabe für direkt gerenderte Programme funktioniert nur lokal.
Der X-Server
Für ein Android-Smartphone installieren Sie aus dem Playstore XSDL [5], einen kostenlosen und quelloffenen [6] X-Server. Im Test ließ er sich selbst auf einem uralten Gerät mit Android 2.3 installieren, stürzte dort aber beim Start stets ab. Eine Empfehlung für Apple-Jünger kann der Autor mangels eigener Erfahrung nicht geben, auch eine Google-Suche erbrachte keine passenden Ergebnisse.
Beim Start des X-Servers konfigurieren Sie diesen über den Button, der den ganzen oberen Rand einnimmt. Hier stellen Sie die Mausemulation auf Tablet und die linke Maustaste auf Touch or hold. Im Menüpunkt Video konfigurieren Sie die Ausrichtung nach den Bedürfnissen des konkreten Projekts (quer, Porträt, automatisch).
Der nächste Konfigurationsschritt wirkt etwas obskur: Es erscheint ein Bildschirm, der diverse Auflösungen anbietet. Wollen Sie nicht die native Auflösung nutzen, dann tippen Sie auf die gewünschte Alternative. Ebenso wählen Sie anschließend die Schriftvergrößerung aus. Beides können Sie bei jedem Start ändern; im Zweifelsfall startet der Server einfach in der alten Konfiguration. Ein Ändern der Auflösung bietet sich sowieso nur bei sehr hochauflösenden Displays an.
Der X-Server selbst bietet keine Möglichkeit zur Interaktion, nach dem Start sehen Sie lediglich einen leeren Bildschirm mit ein paar Anweisungen. Insbesondere zeigt der Server die IP-Adresse des Mobilgeräts an. Jede gestartete Anwendung legt sich dann auf diesen Hintergrund. Abbildung 2 zeigt als Beispiel das Programm Xeyes aus dem Paket x11-apps. Es dient rein dem Vergnügen: Die Augen verfolgen den Mauszeiger.
Damit der RasPi das Smartphone später automatisch findet, sollten Sie dem Handy im eigenen Netz eine feste IP-Adresse geben. Das klappt entweder über Ihren Router mittels fester Zuweisung der IP-Adresse an die MAC-Adresse des Geräts oder in den erweiterten Netzwerkeinstellungen des Smartphones. Die erreichen Sie üblicherweise über einen langen Druck auf die WLAN-Verbindung.
Damit Sie auf dem Raspberry Pi nicht immer mit der sperrigen IP-Adresse hantieren müssen, tragen Sie diese dann noch in dessen /etc/hosts ein und vergeben einen sinnvollen Namen für das Smartphone.
Kontaktaufnahme
Nutzen Sie die Pixel-Variante von Raspbian, dann läuft auf dem RasPi schon ein X-Server und alle Programme senden die Grafikausgabe an diesen lokalen Server. Für einzelne Programme lässt sich das aber problemlos ändern, denn jedes Programm prüft die Umgebungsvariable DISPLAY.
Diese ändern Sie für eine einmalige Programmausführung, indem Sie den Wert beim Aufruf in der Kommandozeile vorneweg angeben (Listing 1, erste Zeile). Alternativ ändern Sie in einem Terminal die Variable für alle nachfolgenden Kommandos (zweite Zeile).
Listing 1
$ DISPLAY=192.168.2.34:0 xeyes $ export DISPLAY=192.168.2.34:0
Die Syntax der Display-Variablen folgt stets dem Muster IP-Adresse:X.Y. Auf den meisten Systemen lautet das Suffix (also die Display-/Screen-Nummer) 0.0 oder einfach 0. Statt der IP-Adresse können Sie auch den Hostnamen des Zielgeräts verwenden.
Nutzen Sie stets dasselbe Gerät im Zusammenspiel mit dem RasPi, dann tragen Sie die Display-Variable am besten in die Datei /etc/profile ein: Dadurch setzen Sie die Variable global. Diese Einstellung gilt aber nur für neue Sessions. Für Pixel-Systeme sollten Sie davon jedoch absehen, denn die Ausgabe des Desktops auf dem lokal angeschlossenen Bildschirm benötigt den Standardwert DISPLAY=:0.0.
Oberflächliches
Das Erstellen einer grafischen Oberfläche für ein Programm zählt zu den aufwendigsten Tätigkeiten in der IT. Jeder kann und will mitreden, jeder hat andere Vorstellungen von schönen Oberflächen oder ergonomischem Design. Außerdem ist die Materie nicht trivial, denn das Programm soll bedienbar bleiben, selbst wenn es sich gerade mit anderen Dingen (etwa dem Berechnen) beschäftigt.






