"Киоск" на OrangePi / RaspberryPI

Почему киоск в кавычках? Ну потому что не совсем киоск :). Итак - надо сделать так чтобы при загрузке Raspberry/Orange PI сразу автоматически загружалась определенная веб-страничка

Почему киоск в кавычках? Ну потому что не совсем киоск :). Итак - надо сделать так чтобы при загрузке 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