#!/bin/bash # OmniScreens Player – инсталация на Linux (Raspberry Pi OS / Debian / Ubuntu). # Използване: curl -sSL https://omniscreens.officeshop.bg/install/omniplayer-setup.sh | sudo bash # Създава потребител "omni", автоматичен вход, Chromium в kiosk режим към плейъра, авто-рестарт и HDMI-CEC включване на телевизора. set -e PLAYER_URL="${PLAYER_URL:-https://omniscreens.officeshop.bg/player/}" API_URL="${API_URL:-https://omniscreens.officeshop.bg/api/device.php}" mkdir -p /etc/omniplayer; [ -f /etc/omniplayer/device.key ] || head -c 20 /dev/urandom | od -An -tx1 | tr -d " \n" > /etc/omniplayer/device.key DK=$(cat /etc/omniplayer/device.key) [ "$(id -u)" = "0" ] || { echo "Стартирайте като root (sudo)."; exit 1; } echo "== OmniScreens Player setup ==" export DEBIAN_FRONTEND=noninteractive apt-get update -y PKGS="xserver-xorg xinit x11-xserver-utils unclutter cec-utils fonts-noto fonts-noto-color-emoji curl" if apt-cache show chromium >/dev/null 2>&1; then PKGS="$PKGS chromium"; elif apt-cache show chromium-browser >/dev/null 2>&1; then PKGS="$PKGS chromium-browser"; fi apt-get install -y --no-install-recommends $PKGS CHROME=$(command -v chromium || command -v chromium-browser || true) [ -n "$CHROME" ] || { echo "Chromium не е намерен. Инсталирайте го ръчно (snap install chromium на Ubuntu) и стартирайте отново."; exit 1; } id omni >/dev/null 2>&1 || useradd -m -s /bin/bash -G video,audio,input,tty omni # Авто-вход на tty1 mkdir -p /etc/systemd/system/getty@tty1.service.d cat > /etc/systemd/system/getty@tty1.service.d/autologin.conf < /home/omni/.bash_profile <<'EOT' if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then while true; do startx -- -nocursor >/dev/null 2>&1; sleep 3; done fi EOT cat > /home/omni/.xinitrc </dev/null 2>&1; echo "as" | cec-client -s -d 1 >/dev/null 2>&1) & rm -rf /home/omni/.config/chromium/Singleton* 2>/dev/null sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]*"/"exit_type":"Normal"/' /home/omni/.config/chromium/Default/Preferences 2>/dev/null exec $CHROME --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-translate --no-first-run --autoplay-policy=no-user-gesture-required --check-for-update-interval=31536000 --overscroll-history-navigation=0 --disable-pinch --window-position=0,0 --start-fullscreen "$PLAYER_URL?dk=$DK" EOT chmod +x /home/omni/.xinitrc; chown -R omni:omni /home/omni # Watchdog: всеки ден в 04:00 рестарт; на всеки 5 мин проверка дали браузърът работи cat > /etc/cron.d/omniplayer <<'EOT' 0 4 * * * root /sbin/reboot */5 * * * * root pgrep -f -- --kiosk >/dev/null || pkill -u omni -f startx; true * * * * * root /usr/local/bin/omniplayer-cmd EOT # Дистанционни команди от портала (рестарт) cat > /usr/local/bin/omniplayer-cmd < /etc/cron.d/omniplayer-tv <<'EOT' 55 7 * * * omni echo "on 0" | cec-client -s -d 1 >/dev/null 2>&1 5 22 * * * omni echo "standby 0" | cec-client -s -d 1 >/dev/null 2>&1 EOT # Raspberry Pi: без екранен скрийнсейвър, HDMI винаги активен if [ -f /boot/firmware/config.txt ] || [ -f /boot/config.txt ]; then CFG=$( [ -f /boot/firmware/config.txt ] && echo /boot/firmware/config.txt || echo /boot/config.txt ); grep -q hdmi_force_hotplug $CFG || echo "hdmi_force_hotplug=1" >> $CFG; fi systemctl set-default multi-user.target echo "== Готово. Рестартирайте: sudo reboot. На екрана ще се покаже код за сдвояване. =="