Until now ./install.sh only managed an already-installed kiosk; ubuntu-based-kiosk.sh was still the only path from a bare Ubuntu Server box to a running one. install.sh now provisions from scratch too: packages, kiosk user, Node.js/Electron, LightDM+Openbox autologin, audio/video/HDMI/power-button hardware setup, and the firewall, then hands off to the already-migrated Core Settings/Advanced menus for initial configuration instead of reimplementing that logic again. - lib/provision.sh: the new provisioning flow, built mostly by calling existing menus (core_settings_menu, emergency hotspot, virtual consoles) - cuts it to ~300 lines against the legacy script's ~4,000-line first_time_install(). - lib/electron.sh: electron_install_binary() extracted out of menus/advanced_electron.sh so provisioning and the existing "Fix blank screen" action share one implementation. - kiosk-app/ and provision/files/: the Electron app source and every system template file, extracted byte-for-byte out of ubuntu-based-kiosk.sh's heredocs into real files. - Found and fixed a bash set -e gotcha along the way: testing a multi-statement function as an if-condition (`if ! some_func; then`) silently exempts everything inside that function from set -e for the duration of the call. Fixed in the new provisioning code and in menus/advanced_electron.sh's pre-existing repair action, which had the same shape. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VfsFSoRqfbRG7XAg5RoE7e
31 lines
942 B
Bash
Executable File
31 lines
942 B
Bash
Executable File
#!/bin/bash
|
|
cd /home/kiosk/kiosk-app
|
|
|
|
# Wait for network
|
|
for i in {1..30}; do
|
|
ping -c 1 -W 2 8.8.8.8 >/dev/null 2>&1 && break
|
|
sleep 2
|
|
done
|
|
|
|
export DISPLAY=:0
|
|
export XAUTHORITY=/home/kiosk/.Xauthority
|
|
export ELECTRON_ENABLE_LOGGING=1
|
|
|
|
# Ensure PipeWire is running
|
|
systemctl --user is-active --quiet pipewire || systemctl --user start pipewire
|
|
systemctl --user is-active --quiet pipewire-pulse || systemctl --user start pipewire-pulse
|
|
systemctl --user is-active --quiet wireplumber || systemctl --user start wireplumber
|
|
|
|
# Wait for PipeWire
|
|
for i in {1..10}; do
|
|
pactl info >/dev/null 2>&1 && break
|
|
sleep 1
|
|
done
|
|
|
|
exec node_modules/electron/dist/electron . \
|
|
--no-sandbox --disable-gpu-sandbox --disable-dev-shm-usage \
|
|
--enable-features=UseOzonePlatform --ozone-platform=x11 \
|
|
--enable-audio-service-sandbox=false --autoplay-policy=no-user-gesture-required \
|
|
--password-store=basic \
|
|
2>&1 | tee -a /home/kiosk/electron.log
|