Unter X11 gibt es ebenfalls ein Konfigurationsprogramm, das den Namen Xcalibrator trägt. Es findet sich allerdings nicht im Raspbian-Repository. Üblicherweise installieren und konfigurieren die Installationsroutinen der Hersteller das Programm.
Anwendungsfälle
Als problematisch erweist sich bei X11-Anwendungen oft, dass mit der grafischen Umgebung ein großer Overhead einhergeht: X11 ist für mehrere Nutzer und viele gleichzeitig offene Fenster und Anwendungen gebaut. Obendrein besitzt es noch Netzwerkfähigkeiten. Daraus folgen lange Ladezeiten und ein hoher Speicherbedarf. Ab einem RasPi 2 aufwärts macht der Einsatz kaum Probleme, gestaltet sich aber auf einem Pi Zero sehr zäh, und für die eigentliche Anwendung bleibt wenig von den notorisch knappen Systemressourcen übrig.
Das ganze Konzept von X11 passt nicht zu den kleinen Bildschirmen, auf denen in aller Regel ein einziges Programm läuft. Die üblichen GUI-Toolkits für X11-Programme sind ebenfalls nicht für sehr kleine Auflösungen und für reine Touch-Bedienung ausgelegt. Einen Ausweg bieten Anwendungen, die direkt und exklusiv den Framebuffer nutzen.
Das berühmteste Vorbild gibt hier die Mediacenter-Software Kodi ab, die Sie nicht unter X11 starten, sondern auf der Konsole. Allerdings fangen hier die Probleme an, denn es gibt zwar viele Mini-Bildschirme, aber wenig Software für den Framebuffer. Insbesondere das Entwickeln eigener Programme gestaltet sich schwierig.
Die effizientesten Möglichkeiten für Framebuffer-Anwendungen bieten C-Bibliotheken, die oft aus dem Embedded-Bereich stammen. Allerdings ist es recht mühsam, Oberflächen in C zu schreiben. Auf Python-Seite gibt es das Kivy-Framework, das aber recht komplex ausfällt und von Raspian schlecht unterstützt wird. Als verdaulichste Alternative bleibt Pygame.
Klimmzüge
Wie der Name schon ahnen lässt, handelt es sich bei Pygame eigentlich um eine Python-Bibliothek zum Programmieren von Spielen. Folgerichtig fehlen jegliche Elemente für den Aufbau einer Benutzeroberfläche, von einem Layout-Management für deren Anordnung ganz abgesehen. Allerdings gibt es ein paar Bibliotheken, die auf Pygame aufsetzen und die Lücke mehr oder minder füllen (PyUI [5], PygameUI [6] oder Pygame-fbgui [7], Letztere vom Autor).
Bei Pygame gibt es aber seit Raspbian “Jessie” ein Problem: SDL, die Grafikbibliothek unterhalb von Pygame, steuert die Touchscreen-Bibliothek Tslib fehlerhaft an. Für die Touch-Bedienung steht also noch der Downgrade einer SDL-Bibliothek auf der To-do-Liste. Zum Glück erledigt das ein Skript von Adafruit [8].
Die letzte Hürde liegt in Pygame selbst: Nur mit etwas Hilfestellung startet ein Pygame-Programm als Systemd-Service automatisch. Dazu müssen Sie das Programm in der Unit-Definition /etc/systemd/system/xxx.service mit nohup aufrufen (Listing 4, Zeile 6). Während der Programmentwicklung haben Sie so die Möglichkeit, sich per SSH auf den Rechner zu verbinden und zum Test das Programm dann manuell zu starten (Listing 5, erste Zeile) und analog zu stoppen. Läuft alles, sorgen Sie für einen automatischen Start nach dem Booten (zweite Zeile).
Listing 4
[Unit] Description=Pygame-fbgui demo program [Service] Type=simple ExecStart=/usr/bin/nohup /usr/local/bin/mediaplayer.py [Install] WantedBy=basic.target
Listing 5
$ sudo systemctrl start xxx.service $ sudo systemctrl enable xxx.service
Fazit und Ausblick
Mittlerweile gibt es für so gut wie jeden Einsatzzweck einen passenden preiswerten Bildschirm. Wichtigstes Kriterium beim Kauf sind im Standard vorhandene Treiber – sie machen den Anschluss und die Inbetriebnahme oft zum Kinderspiel.
Ganz im Gegensatz dazu steht dann der tatsächliche Einsatz: Während Anwender für große Desktops aus Tausenden Programmen im Repository schöpfen dürfen, sieht das bei Programmen für kleine Displays völlig anders aus. Ohne Programmierkenntnisse geht hier nichts, denn Standardprogramme gibt es dafür einfach nicht. Sogar bei selbst geschriebenen Programmen muss man die ein oder andere Hürde überwinden, teilweise für jede Raspbian-Version aufs Neue.
Deswegen stellen wir in einem weiteren Artikel in der nächsten Ausgabe ein konkretes Anwendungsbeispiel vor: eine Oberfläche für einen minimalistischen Mediaplayer auf Basis der Bibliothek Pygame-fbgui.






