I'm relatively new to Raspberry (i.e. to Linux) and I'm experimenting to build a kiosk panel with touch functionality. Only chromium is running with a web app. I follow the most steps of this "howto": HOWTO: Boot your Raspberry Pi into a fullscreen browser kiosk. I change and comment some lines in the xinitrc file. Either because I did not understand them, because it was not working or because it was not needed.

Here is the content of my xinitrc file:

while true; do

    # Clean up previously running apps, gracefully at first then harshly
    # fch: ich verstehe zwar nicht, wieso das nützlich sein soll. Aber wieso nicht. Wird wohl nicht schaden, ausser den Start etwas verzögern.
    killall -TERM chromium 2>/dev/null;
    killall -TERM matchbox-window-manager 2>/dev/null;
    sleep 2;
    killall -9 chromium 2>/dev/null;
    killall -9 matchbox-window-manager 2>/dev/null;

    # Clean out existing profile information
    # fch: Wir lassen das. Nach jedem Start müssen die Dateien halt neu geladen werden. Das ist aber gut nach Updates
    rm -rf /home/pi/.cache;
    rm -rf /home/pi/.config;
    rm -rf /home/pi/.pki;

    # Generate the bare minimum to keep Chromium happy!
    # fch: Braucht es das denn wirklich? Und wenn ja, warum?
    # fch: In der orginalen Anleitung steht version -> 46. Ich habe Version 48 installiert. Muss ich das ändern?
    mkdir -p /home/pi/.config/chromium/Default
    sqlite3 /home/pi/.config/chromium/Default/Web\ Data "CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); INSERT INTO meta VALUES('version','48'); CREATE TABLE keywords (foo INTEGER);";

    # Disable DPMS / Screen blanking
    # fch: na ja. Vorläufig soll der Display doch im Standby Modus gehen. Es ist ja kein richtigen "Kiosk", der ständig eingeschaltet sein soll.
    #xset -dpms
    #xset s off

    # Reset the framebuffer's colour-depth
    # fch: Keine Ahnung, für was das gut sein soll. Wir probieren mal ohne.
    #fbset -depth $( cat /sys/module/*fb*/parameters/fbdepth );

    # Hide the cursor (move it to the bottom-right, comment out if you want mouse interaction)
    # fch: Natürlich brauchen wir den Cursor!
    #xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )

    # Start the window manager (remove "-use_cursor no" if you actually want mouse interaction)
    # fch: Natürlich brauchen wir den Cursor!
    #matchbox-window-manager -use_titlebar no -use_cursor no &
    matchbox-window-manager -use_titlebar no &

    # Start the browser (See http://peter.sh/experiments/chromium-command-line-switches/)
    #chromium  --app=http://saturn.pi-system.ch

    #fch: andere starten Chromium so:
    chromium-browser --noerrdialogs --kiosk http://saturn.pi-system.ch
    # auch mit  --incognito
    #matchbox-keyboard &
    florence &

7" HDMI Touch display is running great. But I don't get the virtual keyboard working. I try matchbox-keyboard and florence. I read florence is better, because it would handle auto hide. But it would be nice to see this keyboard on my screen... I expected, it would be started after chromium if I call it in the xinitrc file. But nothing happens.

I know, there is a possibility to implement a javascript keyboard in the webapp. But I would like to avoid this trick.

Thanks for hints.

  • Ok. I get the matchbox-keyboard on display... I had to call it before Chromium. Florence doesn't work. Now the problem is, the keyboard is always on top. It is possible to get it automatically hidden and shown if the cursor is in an editable control? Or display a "always on top" icon to toggle the keyboard?
    – Fredo
    Aug 23, 2016 at 16:54
  • 1
    Onboard is better than both matchbox & florence IMHO
    – novwhisky
    Oct 19 at 18:02

1 Answer 1


I get it. The matchbox-keyboard has to be call with --daemon parameter:

matchbox-keyboard --daemon &

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.