Nutzt man den Google Chrome Browser im Kiosk Modus als Display, lässt sich damit einen Webseite oder Web-App anzeigen. Nutzer können zwar auf alle Elemente der Webseite zugreifen (zum Beispiel links), aber nicht auf die URL- oder Adress-Leiste. Darum ist es auch nicht so einfach, den Browser von außen fernzusteuern: Zum Beispiel um die Seite neu zu laden oder eine andere Webseite zu zeigen, ohne dass man etwas drückt.
Trotzdem ist es nicht unmöglich, auch ohne Maus die angezeigte Webseite zu ändern: Entweder per Tastatur oder auch per Skript, dass man unter anderem per SSH starten kann. Hat man nämlich keine Tastatur angeschlossen, hilft unter Linux (zum Beispiel auf dem Raspberry Pi) das Programm “xdotool”. Damit lassen sich Maus- und Tastatur-Eingaben simulieren, die sich per Skript starten lassen.
xdotool installieren (Linux/Raspbian):
Mit dem folgenden Befehl installiert man das kleine Programm xdotool. Anschließend kann man damit Tastatureingaben senden: Das zeigen wir weiter unten.
sudo apt-get install xdotool
Um jetzt Tastatur-Eingaben zu senden, erstellt man mit einem Text-Editor wie “nano” eine neue SH-Datei:
nano tastesenden.sh
Der Inhalt sieht dann so aus: Wir gehen hier davon aus, dass Chrome nachher das einzige geöffnete Programmfenster ist:
#!/bin/bash
export DISPLAY=":0"
export XAUTHORITY=/home/pi/.Xauthority
xdotool getactivewindow
xdotool key x
Mit STRG+O speichert man das Programm, mit STRG+X beendet man den Editor. Um jetzt ein “x” an den Browser zu senden, kann man das Skript mit “sh tastesenden.sh” ausführen.
Chrome Kiosk Mode: URL und Webseite per Skript ändern
Mit dem xdotool kann man unter Linux Tastatur-Eingaben simulieren: Dies kann man auch per Skript starten, zum Beispiel per SSH oder zu bestimmten Zeiten. Sendet man so das Kommando “F5”, lädt Chrome die aktuelle Webseite neu. Um den Browser aber fernzusteuern und von außen verschiedene Webseiten laden zu können, benötigt man ein Trick: Da der Chrome im Kiosk Mode keine URL- oder Adress-Leiste besitzt, kann man die angezeigte Adresse so auch nicht ändern.
Unser kleines Javascript auf der Webseite hilft hier weiter: Es reagiert auf verschiedene Benutzereingaben (einzelne Buchstaben) und zeigt dann verschiedene Inhalte an: In unserem Beispiel laden wir immer die gleiche Webseite und übergeben verschiedene Paramater per URL. Möchte man unterschiedliche Webseiten einladen, müssen diese alle das Javascript zum Steuern enthalten – oder man verwendet iframes.
Um auf verschiedene Tasten (wie das “x” aus unserem SH-Skript oben) zu reagieren, brauchen wir jetzt dieses Javascript: Das erkennt die eingegebenen Buchstaben oder zahlen und reagiert darauf. So lassen sich dann zum Beispiel andere Webseiten laden.
<script type="text/javascript">
function keys(key) {
if (!key){
key = event;
key.which = key.keyCode;
}
switch(key.which){
// Taste n:
case 88:location.href = "http://127.0.0.1/?seite=1";break;
// Taste a:
case 65:location.href = "http://127.0.0.1/?seite=2";break;
// Taste w:
case 87:location.href = "http://127.0.0.1/?seite=3";break;
}
}
document.onkeyup = keys;
</script>