Autostart Midori Browser im Vollbild Modus (Kiosk Mode) via Konsole ohne Desktop

In diesem Tutorial zeige ich euch, wir ihr automatisch den Midori Browser im Vollbild (Kiosk Mode) startet nach dem der Raspberry hochgefahren ist. Die grafische Oberfläche (Desktop) von Raspbian wird nicht benötigt oder gestartet.

Eine praktische Anwendung wäre zum Beispiel ein Info-Monitor auf einer Ausstellung. Ich möchte damit eine kleine Steuerzentrale für FHEM realisieren. Dafür werde ich eine PiTFT mit kapazitivem Touchscreen verwenden. Dazu aber in einem späterem Tutorial.

Update: 8.01.2017 Bild drehen hinzugefügt
Update: 17.09.2016 Zeitverzögerung in Schritt 6 hinzugefügt

Das Tutorial setzt voraus das der Raspberry Pi bzw. Debian Linux Rechner im Terminal/Konsole Modus startet und nicht die Desktop Oberfläche lädt.

Inhalt

Midori Vollbild Autostart

  1. Gebt folgenden Befehl in die Konsole ein um die Paketliste zu aktualisieren. Danach wird der Midori Browser und matchbox installiert.
    sudo apt-get update && sudo apt-get install -y midori matchbox
  2. Erstellt eine neue Shell Script Datei mit dem Namen startMidori.sh im Home Verzeichnis und öffnet den Nano Texteditor. Name und Speicherort sind frei wählbar.
    nano startMidori.sh
  3. Fügt folgenden Code ein und beendet den Nano Texteditor mit ctr+x. Um die Änderung zu speichern Y und Enter drücken.
    
    #!/bin/sh
    xset -dpms # disable DPMS (Energy Star) features.
    xset s off # disable screen saver
    xset s noblank # don't blank the video device
    matchbox-window-manager &
    midori -e Fullscreen -a http://www.benjaminroesner.com/blog
    
  4. Macht das Script ausführbar.
    sudo chmod +x startMidori.sh
  5. Ihr könnt das Skript testen indem ihr folgenden Befehl ausführt.
    sudo xinit ./startMidori.sh
    Mit der Tastenkombination CTRL + ALT + F1 beendet ihr den Midori Browser. Falls ihr das Script über SSH aufgerufen habt, könnt ihr es mit CTRL + c beenden.
  6. Damit das Script beim Start des Raspberry ausgeführt wird, öffnen wir die rc.local Datei. Dieses Skript wird beim hochfahren des Raspberry ausgeführt.
    sudo nano /etc/rc.local

    Fügt folgenden Code vor exit 0 ein.

    Für HDMI:

    sudo xinit /home/pi/startMidori.sh &

    Für PiTFT:

    FRAMEBUFFER=/dev/fb1 xinit /home/pi/startMidori.sh &

    Das & am Ende ist wichtig, damit die nachfolgenden Einträge ausgeführt werden.

    Du kannst das Script auch zeitverzögert starten lassen, in dem du den Befehl in Klammern setzt und davor /bin/sleep 10 && schreibst. Die 10 Bedeutet 10 Sekunden Verzögerung.
    (/bin/sleep 10 && xinit /home/pi/startMidori.sh) &
  7. Leider muss sich das System automatisch anmelden, damit das Skript ausgeführt werden kann. Wenn du Raspbian Jessie verwendest kannst du das ganz einfach einstellen mit sudo raspi-config. Dann unter Boot Options Console Autologin wählen.

    Verwendest du eine ältere Raspbian Version gib folgenden Befehl in die Konsole ein.

    sudo nano /etc/inittab

    Such nach dieser Zeile

    1:2345:respawn:/sbin/getty 115200 tty1

    und kommentiert diese mit # aus.

    #1:2345:respawn:/sbin/getty 115200 tty1

    Nach der Zeile fügt ihr folgenden Text ein.

    1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1

    Die Zeile bewirkt das der Benutzer pi ohne Authentifizierung angemeldet wird.

  8. Jetzt müßt ihr nen Raspberry Pi nur noch neu starten …
    sudo reboot

    … und der Midori Browser sollte sich mit der gewünschten Seite im Vollbildmodus öffnen.

    Mit der Tastenkombination CTRL + ALT + F1 beendet ihr den Midori Browser.

Optional: Bild drehen

Möchtest du das Bild im Hochformat, oder um 180 Grad gedreht verwenden, führe folgende Schritte aus.

  1. Öffne die config.txt Datei mit dem Nano Editor

    sudo nano /boot/config.txt
  2. Füge folgenden Text am Anfang der config.txt Datei ein.

    display_rotate=2
    display_rotate=0 Normal
    display_rotate=1 90 Grad
    display_rotate=2 180 Grad
    display_rotate=3 270 Grad
    display_rotate=0x10000 horizontal spiegeln
    display_rotate=0x20000 vertikal spiegeln
  3. Beende die Eingabe mit dem Shortcut ctrl+x und speichere die Änderung mit y.
  4. Nach einem Neustart sollte das Bild gedreht angezeigt werden.

    sudo reboot

Optional: Mauszeiger ausblenden

  1. Installiert das Programm unclutter.
    sudo apt-get install unclutter
  2. Fügt dem startMidori.sh Skript unclutter & hinzu.
    sudo nano startMidori.sh
    
    #!/bin/sh
    xset -dpms # disable DPMS (Energy Star) features.
    xset s off # disable screen saver
    xset s noblank # don't blank the video device
    unclutter &
    matchbox-window-manager &
    midori -e Fullscreen -a https://maker-tutorials.com
    

ausführlichen Artikel über “Raspberry Pi: Programme beim Systemstart ausführen

Gib deine Stimme ab!

57 Likes
Upvote Downvote

Total votes: 56

Upvotes: 53

Upvotes percentage: 94.642857%

Downvotes: 3

Downvotes percentage: 5.357143%

Geschrieben von Ben

#Blogger #Designer #RaspeberryFan #Self-Employed #Developer #Javascript
TwitterGithubThingiverse

48 Kommentare

Kommentar verfassen
    • Hallo Marco,
      der Fehler Failed to start /etc/rc.local Compatibility. tritt auf, weil die Autostart Variante über /etc/rc.local ist leider veraltet und funktioniert nicht mehr unter Raspbian Stretch.
      Du musst auf systemd umstellen. Ich versuche die Anleitung in den nächsten Tagen zu aktualisieren.

      • Hallo Ben
        Danke für die tolle Anleitung! (Daumen hoch!)

        Leider stolpere ich am gleichen Ort. Ich habe noch keine gescheite Anleitung gefunden wie ich das Script im Systemd einbinden muss.

        Kann dies ggf. jemand kurz hier in den Kom. erklähren?

        Liebe Grüsse

        Roger

      • Hallo Ben

        Bei mir funktioniert es unterdessen auch mit der rc. local variante. Bei mir war das Problem dass ich deine Anleitung mit sleep 10 verwendet habe. Dies hat nicht funktioniert. nun habe ich in der rc.local die einfach Variante ohne Sleep 10 genommen und das Sleep 10 dann in der startMidori.sh eingefügt. Nun geht es….

        liebe Grüsse

  1. Hey,
    habe dein Guide benutzt und war Wirklich Hilfreich,
    habe jetz nur ein Problem ich würde gerne eine HTML datei damit ausführen
    und hatte es einfach mal ausprobiert in dem Shell skript mit
    midori -e Fullscreen -a //media/raspberry/TEST/terminliste.html

    (media/raspberry ist hierbei der Mount Punkt vom NAS da die Datei im NAS liegt.)

    Hat leider nicht geklappt und ich bin mittlere Weile ein wenig am Verzweifeln wie ich die Html seite öffne

    • Hallo Bastian,
      wenn deine NAS gemounted ist müsste der Pfad /media/raspberry/TEST/terminliste.html sein.
      Ein Slash nur am Anfang.
      Wenn das nicht klappt, am einfachsten die HTML Datei auf den Raspberry kopieren.

  2. tab oder reiter anhängen wie im firefox möglich?
    oder anhand eines tastatur zeichens eine 2 startseite anlegen?
    natürlich beim midori.

  3. Hallo Ben,
    vielen Dank für die Beschreibung. Ich hatte die Lösung nun für 6 Monate am Laufen. Nun wurde der X Server auf 1.18.4 automatisch gehoben und ich bekomme den Fehler: modProbe: FATAL: Module g2d_23 not found. Meine Java Graphik-Anwendung startet nicht mehr ? Für Hilfe wäre ich sehr dankbar!

    • Sorry,
      Fehler hängt nicht mit 1.18.4 zusammen. Sobald ich zu Beginn nur einmal eine LAN Verbindung hatte startet die Gaphik nicht mehr. Die Fehlermeldung modProbe … habe ich sonst auch.
      Bin weiter auf der Suche …
      Irgendeine Idee ?

      • Sorry again,
        Läuft alles wieder, war ein Fehler in meinem Programm, der erst zuschlug nachdem die Uhr über LAN aktualisiert wurde.

  4. Danke, es funktioniert alles super!
    Ich habe nur eine Frage: Wie kann ich die Auflösung anpassen? Ich habe nun Google eingestellt, jedoch wird es mir größer angezeigt als das Display groß ist. Ich würde gern das ich ohne scrollen (Ich habe ein Waveshare 3,5″ Display) alles sehen kann. Gibt es da eine Möglichkeit?

    • Meinst du den Inhalt des Browsers? Es gibt eine Zoom Option im Browser, um den ganzen Inhalt kleiner oder größer Darzustellen.

      midori -e Fullscreen -e ZoomOut -a https://maker-tutorials.com
      du kannst probieren ob man die Option zweimal aufrufen kann um das Bild noch kleiner Darzustellen.
      midori -e Fullscreen -e ZoomOut -e ZoomOut -a https://maker-tutorials.com

  5. Moin moin Zusammen,
    ich nutze Raspbian Lite Jessie und bekommen immer bei Punkt 5 die Meldung init: command not fount.
    Alle Anderen Schritte der Anleitung habe ich nacheinander befolgt.
    Ich bin für jeden Tip dankbar

      • 😀 ja Schreibfehler kenn ich zu gern. Was für ein CLI Programm nutzt du das du Auto-Korrektur hast?

    • Hallo erstmal!
      Ich bekomme die gleiche Fehlermeldung.
      -bash: xinit: Kommando nicht gefunden.
      Gibt’s da ‘ne Lösung für?
      Wäre auch für etwas Hilfe dankbar.

      • Nach einem beherzten “sudo apt -y install xinit” klappt’s jetzt mit dem xinit, nur bei den xset-Kommandos hapert’s noch. Vermutlich fehlt da noch eine andere X-Komponente. Ist für mich aber eher unwichtig.
        Jetzt habe ich das gleiche Problem wie iMer weiter unten. Kein Video, nur weißer Screen. 🙁
        Gibt’s dafür mittlerweile eine Lösung?

  6. Hallo, eine super Anleitung. Ein Traum so schnell einen einfachen Infomonitor zu bauen.
    Ich habe beim Runterfahren die Meldung “waiting for x server to shut down pi@infomonitor1: (II) Server terminated sucsessfully (0). Closing log file”

    Die Meldung bleibt einige Minuten – dann erfolgt der Neustart.

    Kann mir da jemand helfen?

  7. Hi,

    vielen Dank, ich nutze den Pi 1 und leider kann der Browser (midori) bei mir kein Video abspielen.
    Hast Du eine Idee wie ich das hinbekomme?

    Die Quelle ist ein Raspberry 3 auf dem ein UV4l Streaming Server läuft an der eine Raspberry Cam angeschlossen ist.

    Wie oben in Schritt 3 beschrieben habe ich dort die URL des Streams eingetragen (Stream funktioniert auf meinen anderen Rechnern). Wenn ich midori über sudo xinit ./startMidori.sh
    starte kommt leider nur ein weißes Bild auf meinem Fernseher.

    Bin für jeden Tipp dankbar

    Viele Grüße

      • Nein es ist kein Flash, ich kann bei der Quelle mjpeg video, jpeg still (streamable) und H264 auswählen. Habe ich aber alle drei schon ausprobiert…
        Fehlt da vielleicht noch ein codec oder so?

  8. Hallo !

    Danke erstmal für diese spitzen Anleitung, funktioniert alles einwandfrei ! !

    Ist es möglich, dass man automatisch beispielsweise an das linke Eck des Browserfensters heranzoomt ?

    Hab dort eine flash Animation laufen und hätte die gerne etwas größer dargestellt.

    Danke schonmal im Voraus!

    Mfg Martin

  9. Hallo,
    Habe das RaspberryPi vor einem halben Jahr nach dieser Anleitung eingerichtet und habe zusäzlich eine Zeitschaltu am TV montiert. Hat bis von einer Woche wunderbar fuktioniert, dafür besten dank. Seit einer Woche muss ich jeden morgen die Webseite aktualisieren damit sie geladen wird. Eine Idee woran das liegen könnte?

    • Habe die Konstellation schon lang nicht mehr verwendet. Bin aber dabei mir ein Magic Mirror zu bauen. Da muss ich ein Browser beim Booten starten. Wenn ich ein Fehler findet schreib ich es hier.

  10. Hallo,
    vielen Dank für die Anleitung. So nah bin ich bisher einer Lösung meines Problems noch nie gekommen. Ich habe einen Raspberry Pi Zero mit Raspbian Jessie. (da fuktioniert ja chromium nicht). Deshalb habe ich es, wie in der Anleitung mit midori probiert. Das hat auch alles gut funktioniert. Jedenfalls, bis ich im letzten Schritt die Darstellung das Bildschirms um 90° drehte, da ich ein Hochformat-Display baue. Ich habe hierzu die config.txt um display_rotate=1 erweitert.

    Mein Problem hierbei ist, dass dann das shell script nicht mehr ausführt und einen error zurück wirft, wenn ich es ausführen will.

    Kann mir da jemand helfen, ich komme echt nicht weiter…

    Vielen Dank!

    • xset: unable to open display “”
      xset: unable to open display “”
      xset: unable to open display “”
      unclutter: could not open display
      matchbox: can’t open display! check your DISPLAY variable.
      Midori – Anzeige kann nicht geöffnet werden:

      Wie gesagt, das sagt der aber nur, wenn ich vorher das Display rotiere…

      • Ich habe das gleiche Problem und kekomme es nicht gelöst.
        Zum Setup:
        – Raspberry PI Zero W
        – Rasbian Strech lite
        – Waveshare Display 7inch HDMI LCD (C), 1024×600, IPS

        Wär echt glücklich, wenn jemand eine Lösung für mich hätte

  11. Zum Punkt 7: Starten eines Skripts ohne vorherige (automatische) Anmeldung

    Das Starten des Skripts sollte – grundsätzlich(!) – auch ohne (automatische) Anmeldung möglich sein. Das Problem besteht vermutlich darin, dann auch etwas anzeigen zu können. Eine beliebige Ausgabe auf dem Bildschirm macht ja in aller Regel nur Sinn, wenn da auch jemand ist, der sich diese Ausgabe anschaut – und das ist dann eben der angemeldete Benutzer 😉

    Ich würde dann allerdings anders vorgehen und den Script-Aufruf nicht in der /etc/rc.local hinterlegen, sondern in einer Datei (da bin ich mir aber nicht 100%-ig sicher) namens .xinitrc im Home-Verzeichnis des (angemeldeten) Benutzers, also hier /home/pi/.xinitrc

    Das ist vom Ergebnis her zwar nicht anders als deine Lösung, passt aber meines Wissens besser zu Linux 😉

  12. Leider funktioniert das Anpassen der inittab mit Debian Jessie nicht mehr. Wäre super, wenn die Anleitung dahingehend angepasst werden würde.

  13. Danke für die Tipps. Eine Korrektur plus Ergänzung hätte ich noch anzubringen:

    ALT+CTRL+F1 beendet Midori nicht, sondern schaltet auf ein anderes (das erste) virtuelle Terminal um. Mit ALT+CTRL+F2 sollte Midori dann auch wieder sichtbar werden (zumindest wenn, wie bei runeaudio, nur das eine virtuelle Terminal konfiguriert ist).

    Testen, ob Midori noch läuft, kann man (nach ALT+CTRL+F1) mit dem Befehl:

    ps -ef | grep midori

    (mit der folgenden, oder ähnlichen Ausgabe)
    root 565 552 0 07:46 ? 00:00:21 midori -p -e Fullscreen http://localhost

    Wirklich beenden, falls gewünscht, lässt sich Midori dann über:

    kill 565

    (Wobei 565 die Zahl (technisch: Prozess-ID) ist, die an zweiter Stelle in der zuvor genannten Ausgabe steht, wird immer unterschiedlich sein)

    Eine Möglichkeit, den Fullscreen-Mode zu beenden, verwendet . Dann kann man noch über einen Rechts-Klick im TAB-Bereich die Menüleiste anzeigen lassen und dort “Close all” (oder so ähnlich) auswählen. Damit ist dann ebenfalls Midori beendet.

  14. Hi,
    vielen dank für diese anleitung.
    Alles funktioniert prima – außer, dass trotz fullscreen immer noch eine titel-leiste und einen rahmen angezeigt wird.
    Eine idee, wie ich das noch loswerde?
    beste grüße
    timo

    • Das Problem lag im matchbox
      mit
      matchbox-window-manager -use_titlebar no &

      kann das problem umgangen werden.
      allerdings wird von mirodi nach einem automatischen refresh die navigationbar angezeigt.
      eine idee wie ich das beseitigen kann?

      grüße
      timo

    • Hallo Timo,
      danke für den Matchbox Tipp. Wie du die Navigationsbar noch ausblenden kannst weiss ich leider nicht, da ich damals das Problem nicht hatte und jetzt kein Laufendes System mit dieser Konstellation habe.
      Falls du das Problem noch lösen kannst, würde ich mich sehr freuen wenn du es hier in die Kommentare schreibst. Es ist bestimmt hilfreich für die anderen Leser.

  15. Läuft leider bei mir nicht

    pi@raspberrypi ~ $ xinit ./startMidori.sh

    Fatal server error:
    Server is already active for display 0
    If this server is no longer running, remove /tmp/.X0-lock
    and start again.

    Please consult the The X.Org Foundation support
    at http://wiki.x.org
    for help.

    Display ist ein Waveshare 3,5″

    • Ich kenne mich leider nicht mit den Waveshare Displays aus. Ich wurde aber sagen der X-Server läuft schon. Hast du die Anleitung über die Konsole ausgeführt, oder über den Desktop die Konsolen (Fenster) geöffnet?
      Du musst die Anleitung per SSH oder in der Konsole ausführen.

    • Hallo,
      gibt es hier mittlerweile eine Lösung für? habe ein Waveshare 7″ Display und würde gerne den browser im fullscreen starten.

      • Hast du die Anleitung von einem anderen Rechner per SSH ausgeführt?
        Wenn der Raspberry hochfährt sollte er sich in die Konsole einloggen und nicht die Desktop GUI starten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.