Содержание
Введение[править]
Иногда может возникнуть задача запуска приложения в Linux в режиме киоска.
Хотя есть специализированные дистрибутивы для коисков, по ряду причин может быть интересно запуститься именно на базе Calculate Linux. Данная инструкция составлена для Calculate Linux LXQt 18.12.
Установка Calculate Linux[править]
Установите Calculate Linux LXQt, взяв дистрибутив с сайта.
В процессе установки создайте нового пользователя (далее будем считать, что пользователь для приложения киоска носит имя kiosk), под которым вы будете запускать режим киоска и включите для него автоматический вход (создайте отдельного от guest пользователя, оставив guest для служебных целей).
Войдите под пользователем kiosk и настройте при необходимости работу сети.
Настройка режима киоска с помощью Openbox и настроек LXQt[править]
Установите приложение, которое собираетесь запускать в режиме киоска (например ELiS Kiosk) и убедитесь, что оно нормально запускается и само открывается на полный экран.
Перейдите к настройке LXQt: Кнопка "Старт" - "Параметры" - "Системные настройки LXQt".
"Старт" - "Параметры" - "Системные настройки LXQt" - "Управление энергопотреблением" - "Бездействие": оставьте включенным управление при простое, но измените поле "при простое" на "ничего".
"Старт" - "Параметры" - "Системные настройки LXQt" - "Настройки сеанса" - "Основные настройки" - "Модули LXQt": снимите отметки с "Рабочий стол", "Глобальные сочетания клавиш", "Служба уведомлений", "Панель".
"Старт" - "Параметры" - "Системные настройки LXQt" - "Настройки сеанса" - "Автозапуск" - "Автозапуск только для LXQt" - "Добавить": выберите приложение, которое будет автоматически запускаться в режиме киоска (например ELiSKiosk).
Теперь надо отключить декорацию окон под пользователем kiosk, для чего надо настроить Openbox:
"Старт" - "Системные" - "QTerminal" и введите: $ vi ~/.config/openbox/rc.xml для перехода редактирования конфигурации в редакторе vim.
Найдите тег <applications> и внутри него добавьте:
<application class="*"> <decor>no</decor> </application>
(справка по vim: для перехода в режим редактирования нажмите "i", затем напишите нужный код, нажмите Esc для выхода из режима редактирования и нажмите последовательно клавиши ":", "w", "q" для записи изменений и выхода из vim).
Отключение заставки[править]
Для отключения заставки создайте файл ~/.profile (vi ~/.profile) и добавьте в него строки:
#!/bin/sh xset s off xset s noblank xset -dpms
Сделайте файл .profile исполняемым
chmod 0555 ~/.profile
Перезагрузите компьютер.
Если что-то не получилось[править]
Вы можете переключиться в терминал в другой сеанс, нажав клавиши Ctrl+Alt+F1 и удалив домашнюю папку пользователя kiosk (# rm -Rf /home/kiosk/) или только конфигурацию (rm -Rf /home/kiosk/.config).
Автоматический перезапуск при падении приложения[править]
На этом можно закончить, но если ваше приложение падает, надо чтобы оно автоматически перезапускалось. Можно это сделать разными путями, один ниже.
Чтобы приложение перезапускать, надо написать сервис, который будет отслеживать факт запуска процесса и если он не запущен, автоматически его запускать.
Такие сервисы называют супервизорами.
Создадим папку для размещения скрипта супервизора:
# mkdir /opt/kiosk
Напишем сам скрипт в /opt/kiosk/supervesor.sh, который будет проверять, что приложение KioskAppName по пути KioskAppPath (подставьте свой путь и название запускаемого процесса) сейчас запущено и если оно не запущено, то запускает его.
При этом установим задержку при старте в 180 секунд, а проверку на существование процесса будем делать каждую секунду.
#!/bin/sh # run KioksApp if it down # for autostart on gentoo add /etc/init.d/KioskApp by command 'eselect rc add KioskApp default' KioskAppName=KioskBrowser # name of binary app KioskAppPath=/opt/kiosk/KioskBrowser # full path to binary app export DISPLAY=:0.0 # wait loading x11 sleep 180s while true; do sleep 1s pid=$(pidof $KioskAppName) ## uncomment for KioskBrowser and comment code with pid #SECRET=******** #status=$(curl "http://127.0.0.1:8080/status?key=$SECRET" 2>/dev/null |grep \"isWorks\":true) #if -z $status ; then if -z $pid ; then echo $KioskAppName not runned > /dev/kmsg pkill $KioskAppName > /dev/null sudo -u kiosk $KioskAppPath > /dev/null 2>&1 # run app fi; done
Создадим в /etc/init.d/KioskApp скрипт запуска супервизора:
#!/sbin/openrc-run # Copyright 2020 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="KioskApp daemon" description="" command=/opt/kiosk/supervesor.sh depend() { need xdm }
Сделаем скрипт исполняемым:
# chmod 0755 /etc/init.d/KioskApp
Включим сервис супервизора:
# eselect rc add KioskApp default
Разворот сенсора[править]
Иногда сенсорные экраны развернуты и клики отображаются в другом месте, чтобы это преодолеть необходимо произвести преобразования ввода на конкретном сенсоре. Пример скрипта:
export DISPLAY=:0.0 xinput set-prop "Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface" --type=float "Coordinate Transformation Matrix" -1 0 1 0 -1 1 0 0 1