Donnerstag, 19. April 2012

Ubuntu 12.04 LTS - Chrome Kiosk Mode

Ziel ist es ein einfach einzurichtendes Linux zur Nutzung im sogenannten Chrome Kiosk Mode. Dabei wird der Google Chrome Browser in Fullscreen sowie mit eingeschränkten Features gestartet. Als erstes installieren wir ein Ubuntu 12.04 LTS und entfernen eine Vielzahl an ungenutzten Programmen um die Umgebung etwas abzuspecken.


Hierzu hilft uns APT (mit Super Cow Powers)

UbuntuONE:
apt-get remove --purge python-ubuntuone-client rhythmbox-ubuntuone ubuntuone-client ubuntuone-client-gnome ubuntuone-installer ubuntuone-couch ubuntuone-control-panel python-ubuntuone-storageprotocol 
Thunderbird:
apt-get remove --purge thunderbird thunderbird-globalmenu thunderbird-gnome-support thunderbird-locale-de thunderbird-locale-en thunderbird-locale-en-us librhythmbox-core5 rhythmbox rhythmbox-data rhythmbox-mozilla rhythmbox-plugin-cdrecorder rhythmbox-plugin-magnatune rhythmbox-plugin-zeitgeist rhythmbox-plugins 
Telepathy:
apt-get remove --purge telepathy-gabble telepathy-haze telepathy-idle telepathy-indicator telepathy-logger telepathy-mission-control-5 telepathy-salut libtelepathy-logger2 libtelepathy-glib0 libtelepathy-farstream2 libfolks-telepathy25 indicator-status-provider-mc5 
LibreOffice:
apt-get remove --purge libreoffice-base-core libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw libreoffice-emailmerge libreoffice-gnome libreoffice-gtk libreoffice-help-de libreoffice-help-en-us libreoffice-impress libreoffice-l10n-de libreoffice-math libreoffice-style-human libreoffice-style-tango libreoffice-writer openoffice.org-hyphenation 
Firefox:
apt-get remove --purge firefox firefox-globalmenu firefox-gnome-support firefox-locale-de firefox-locale-en
Auf dem System befindet sich nun zwar noch immer eine Vielzahl an unnötigen Programmen und Tools, jedoch muss jeder für sich entscheiden, ob an dem Terminal ein Drucker genutzt, Videos Abgespielt  oder ähnliche Features eingesetzt werden.

Zur Installation des Chromium Browsers nutzen wir "apt-get install chromium-browser"

Nun jedoch zum wesentlichen. Damit das Terminal jederzeit funktional ist, bedarf es einem Autologin des Benutzers. Dies lässt sich unter Benutzer mittels "Automatische Anmeldung" aktivieren. Wir nennen diesen User einfach "Kiosk". Eingeloggt als dieser Benutzer deaktivieren wir den Screensaver in der Systemsteuerung "Helligkeit und Sperren" sowie die dazu gehörige Passwort Abfrage. Damit auch ja kein Black Screen mehr auftritt hilft zusätzlich folgender Befehl, direkt aus dem Desktop heraus:
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
Nun beenden wir die aktuell laufende X Umgebung mittels wechsel zu tty1 und geben dort als root "stop lightdm" ein.

Folgende Konfigurationsdateien können nun angepasst werden:

Als erstes wird eine neue Session zum Desktop Manager hinzugefügt. Wir nennen diese einfach Kiosk und könnten manuell bereits auf diese Switchen.

# cat /usr/share/xsessions/kiosk.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Kiosk Mode
Comment=Chromium Kiosk Mode
Exec=/usr/share/xsessions/chromeKiosk.sh
Type=Application
Im Chromium Browser sollte die Auflösung an die gewünschte Bildschrimeinstellung angepasst werden
# cat /home/kiosk/.config/chromium/Default/Preferences
{
...
   "browser": {
      "window_placement": {
         "bottom": 960,
         "left": 0,
         "maximized": true,
         "right": 1280,
         "top": 0,
         "work_area_bottom": 960,
         "work_area_left": 0,
         "work_area_right": 1280,
         "work_area_top": 24
      }

und führen folgende Befehle aus
chown 0.0 /home/kiosk/.config/chromium/Default/Preferences
chmod 644 /home/kiosk/.config/chromium/Default/Preferences
weitergehend bauen wir uns für die X Session eine entsprechende Datei die den Browser mit der gewünschten URL (typischerweise http://localhost oder ähnliches) aufruft.
# cat /usr/share/xsessions/chromeKiosk.sh
#!/bin/bash
while true;
do
     chromium-browser %u --incognito -kiosk \
               --start-maximized \
               --no-default-browser-check \
               --disable-translate \
               --disable-sync \
               --disable-panels \
               http://www.google.de;
      sleep 0.1s;
done
diese Datei muss noch ausführbar gemacht werden. Dies geschieht mittels "chmod +x /usr/share/xsessions/chromeKiosk.sh".

In "/home/kiosk/.dmrc" sollte bei "Session=kiosk" ebenfalls korrekt eingetragen werden.

Zuguterletzt erklären wir noch dem Lightdm das er auch in den Kiosk mit dem Benutzer starten soll
# cat /etc/lightdm/lightdm.conf
[SeatDefaults]
autologin-guest=false
autologin-user=kiosk
autologin-user-timeout=0
autologin-session=lightdm-autologin
user-session=kiosk
greeter-session=unity-greeter
allow-guest=false
Nach all diesen Anpassungen müsste der Kiosk eingerichtet sein und sich auch direkt bei Start des Systems bzw. durch "start lightdm" auf dem Screen zeigen.

Ich hoffe nichts vergessen zu haben, denke und freue mich über Feedback wo Ihr dies oder ähnliches selbst einsetzt.

Kommentare:

  1. Hallo,

    echt geiles ding.
    funktioniert super jedoch habe ich ein paar fragen.
    wie kann ich die adressleiste aktivieren und rechtsklick deaktivieren?
    wie komm ich in den admin benutzer?

    lg
    Balazs

    AntwortenLöschen
  2. Hallo,
    ich bin recht neu in Ubuntu und verstehe nicht ganz wie und wo ich was eingeben soll.. Die Dateien werden mit einem Schreibprogramm erstellt?
    Oder besser: Gibt es eine Schritt für Schritt Erklärung für Ubuntu Neulinge (Kein Porgrammierer)?

    Ich hab dieses und jenes probiert. Ich scheiterte am fehlenden "Login Screen", dann fand ich diese Seite, doch leider weiß ich halt nicht wie genau...

    AntwortenLöschen
  3. Bin ebenfalls ein Neuling und wollte fragen, ob hierfür der (Standard) Unity, oder Gnome verwendet wurde?
    Danke
    Rainer

    AntwortenLöschen
  4. Leider funktioniert dies so nicht mehr in 14.04 LTS
    Der User Kiosk wird immer mit der Session Ubuntu eingeloggt. Per Hand lässt sich die Session Kiosk allerdings auswählen und startet dann auch wie gewollt. Aber es soll ja mit dem Autologin funktionieren. Hast du da eine Lösung?

    AntwortenLöschen