"Киоск" на OrangePi / RaspberryPI
Почему киоск в кавычках? Ну потому что не совсем киоск :). Итак - надо сделать так чтобы при загрузке Raspberry/Orange PI сразу автоматически загружалась определенная веб-страничка
В моем случае пользователь не может лазить по этой страничке - поэтому это и не совсем киоск. Решить надо следующие задачи:
Запускать графический режим, запустить автоматом в нем браузер на полный экран.
Разрешить проигрывать аудиофайлы ( по умолчанию без "активного действия пользователя", т.е. пока пользователь не ткнет мышкой во вкладку где музыка играет - это запрещено.
Убрать курсор.
Убрать энергосбережение - чтобы не гасился экран.
Приступаем
Для raspberry я брал стандартный образ Pi OS 32-bit c desktop, для OrangePi (у меня в руках побывали Pi Lite и Pi One, обе кстати успешно со своей задачей справились) брал образы
ubuntu_xenial_desktop посвежее.
apt-get install unclutter
- этот пакет нужен чтобы отключить курсор
у меня это электронная очередь, поэтому создавал файл с именем EQueue.desktop и для OrangePi я его помещал
в каталоге /home/orangepi/.config/autostart
, для RaspberryPi соответственно /home/pi/.config/autostart
(в дальнейшем я все пути
буду приводить для orangepi, для raspberry /home/orangepi меняйте на /home/pi)
с таким содержимым
[Desktop Entry] Encoding=UTF-8 Version=0.9.4 Type=Application Name=EQueue Comment=EQueue Exec=/home/orangepi/start_equeue OnlyShowIn=XFCE; StartupNotify=false Terminal=false Hidden=false
Это для автозапуска скрипта start_equeue в котором все и будет запускаться
Для отключения энергосбережения (чтоб не выключался монитор/телевизор по истечении времени)
в файлике /home/orangepi/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
вносим изменение, ставим dpms-enabled в false
<?xml version="1.0" encoding="UTF-8"?> <channel name="xfce4-power-manager" version="1.0"> <property name="xfce4-power-manager" type="empty"> <property name="power-button-action" type="empty"/> <property name="brightness-switch-restore-on-exit" type="int" value="-1"/> <property name="brightness-switch" type="int" value="0"/> <property name="show-tray-icon" type="int" value="1"/> <property name="lid-action-on-battery" type="uint" value="1"/> <property name="logind-handle-lid-switch" type="bool" value="false"/> <property name="lid-action-on-ac" type="uint" value="0"/> <property name="inactivity-sleep-mode-on-battery" type="uint" value="1"/> <property name="sleep-button-action" type="uint" value="1"/> <property name="hibernate-button-action" type="uint" value="1"/> <property name="lock-screen-suspend-hibernate" type="bool" value="false"/> <property name="critical-power-action" type="uint" value="4"/> <property name="critical-power-level" type="uint" value="5"/> <property name="dpms-enabled" type="bool" value="false"/> </property> </channel>если в роли монитора у нас телевизор - не забыть и в его настройках отключить гашение экрана по таймауту!
Ну и собственно сам скрипт start_equeue который запускает браузер и отключает курсор мышки Download file start_equeue
#!/bin/bash # ждем пока не "поднимется" сеть _IP="" while [ "$_IP" = "" ] do _IP=$(hostname -I) || true done # еще раз пытаемся устанавить режимы энергосбережения - какие-то параметры работают, на разных железках по разному /usr/bin/xset s off /usr/bin/xset -dpms /usr/bin/xset s noblank # Убираем признак краша браузера на всякий случай #/bin/sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium-browser/Default/Preferences /bin/sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/Preferences # в моем случае я получаю нужный урл с сервера url=`curl 10.90.0.100/get_queue_url.php 2>>/tmp/log_chrome` # запускаем браузер /usr/bin/chromium-browser --noerrdialogs --disable-translate --disable-features=AudioServiceSandbox --autoplay-policy=no-user-gesture-required --incognito --kiosk "$url" # отключаем курсор /usr/bin/unclutter -display :0 -noevents -grab