Raspberry Pi w trybie kiosku

W ostatnim artykule dowiedzieliśmy się w jaki sposób podłączyć tani wyświetlacz do Raspberry Pi. Dziś pokażę Wam, jak skonfigurować malinkę, żeby pracowała w trybie kiosku – bez pulpitu, możliwości zwijania okienek i konfiguracji. Po prostu wyświetlamy jedną aplikację z której użytkownik ma prawo korzystać i koniec :)

W poradniku będę korzystał z obrazu systemu w wersji lite. Jeżeli chcecie wyświetlać obraz kiosku na ekranie ILI9341 to krok po kroku wykonajcie czynności z poprzedniego artykułu z pominięciem instalacji środowiska graficznego. Jeżeli natomiast Wasz kiosk ma być wyświetlany przez monitor podłączony do złącza HDMI możecie wystartować z czystym systemem.

Instalacja serwera X

Korzystamy z systemu w najbardziej okrojonej wersji, więc wszystko ponad podstawowe funkcje musimy doinstalować we własnym zakresie. Z tego też powodu musimy zainstalować serwer X, który będzie wyświetlał obraz na wybranym przez nas ekranie.

sudo apt-get update
sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit

Program który chcemy wyświetlać

Będziemy musieli zainstalwoać w systemie program, który ma być naszym kioskiem. Może to być dowolny program. W tym artykule pokażę jak uruchomić przeglądarkę internetową, która będzie wyświetlała przygotowaną przez nas stronę www.

Zainstalujmy więc w systemie chromium:

sudo apt-get install --no-install-recommends chromium-browser

Menedżer okien

Dobrym i prostym w konfiguracji menedżerem okien będzie w naszym przypadku Openbox.

sudo apt-get install --no-install-recommends openbox

Konfiguracja

Kiedy mamy już poinstalowane wszystkie wymagane komponenty musimy powiedzieć Openboxowi co ma zrobić po uruchomieniu. W tym celu edytujemy plik autostartu:

sudo nano /etc/xdg/openbox/autostart

i wpisujemy do niego poniższą treść:

# Disable any form of screen saver / screen blanking / power management
xset s off
xset s noblank
xset -dpms

# Allow quitting the X server with CTRL-ATL-Backspace
setxkbmap -option terminate:ctrl_alt_bksp

# Start Chromium in kiosk mode
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
chromium-browser --disable-infobars --kiosk 'http://your-url-here'

pamiętając, aby w ostatniej linijce ustawić adres WWW na przygotowaną przez nas stronę. Może to być strona z internetu lub np. lokalna. O tym jak postawić serwer www na malince możemy przeczytać tutaj.

Pierwsze trzy komendy zapewnią nas, że system nie włączy wygaszacza ekranu po pewnym czasie nieaktywności. Kolejna komenda zapewni opcję wyłączenia serwera X kombinacją klawiszy Ctrl + Alt + Backspace, natomiast ostatnie 3 to uruchomienie przeglądarki Chrome tak, żeby nie wyświetlała monitów o tym, że ostatnio została zamknięta niepoprawnie.

Wystartowanie serwera X podczas startu systemu

Pierwszym krokiem jest wystartownaie serwera X po zalogowaniu. W tym celu wpisujemy

sudo nano ~/.bash_profile

i uzupełniamy ten plik o odpowiednią treść w zależności od tego na którym monitorze chcemy wyświetlić obraz:

HDMI

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor

ILI9341

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && FRAMEBUFFER=/dev/fb1 startx -- -nocursor

Powyższe ustawienia wyświetlą nam interfejs bez kursora myszki. Jeżeli chcemy go mieć wystarczy usunąć z nich część -- -nocursor

Następnie musimy dokonać zmiany w konfiguracji RPi tak, żeby bootowało się ono do konsoli z automatycznym logowaniem.

sudo raspi-config

Wybieramy Boot Options > Desktop / CLI > Console Autologin

Następnie zapisujemy ustawienia i rebootujemy system.

Pozostałe kroki

Do zbudowania pełnoprawnego kiosku pozostało nam jeszcze napisanie własnej aplikacji (np. w Javie), która będzie bardziej zaawansowana niż strona WWW oraz dodanie obsługi ekranu dotykowego.

Źródło

Artykuł oparty o wpis na blogu die-antwort.eu z dnia 6 grudnia 2017.