2026-03-12 12:56:59 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
# Start X server in the background
|
|
|
|
|
/usr/bin/Xorg :0 -nocursor vt1 -nolisten tcp -keeptty &
|
|
|
|
|
XPID=$!
|
|
|
|
|
sleep 2
|
|
|
|
|
|
|
|
|
|
# Check if X started
|
|
|
|
|
if ! kill -0 $XPID 2>/dev/null; then
|
|
|
|
|
echo 'ERROR: Xorg failed to start'
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
export DISPLAY=:0
|
|
|
|
|
export HOME=/home/archipelago
|
|
|
|
|
|
|
|
|
|
# Allow archipelago user to connect
|
|
|
|
|
xhost +SI:localuser:archipelago 2>/dev/null
|
|
|
|
|
|
|
|
|
|
# Disable screen blanking
|
|
|
|
|
xset s off 2>/dev/null
|
|
|
|
|
xset -dpms 2>/dev/null
|
|
|
|
|
xset s noblank 2>/dev/null
|
|
|
|
|
|
|
|
|
|
# Hide cursor
|
|
|
|
|
unclutter -idle 3 -root &
|
|
|
|
|
|
2026-04-02 20:28:53 +01:00
|
|
|
# Kill any stale Chromium instances before starting
|
|
|
|
|
pkill -u archipelago -f 'chromium.*kiosk' 2>/dev/null
|
|
|
|
|
sleep 1
|
|
|
|
|
|
2026-03-12 12:56:59 +00:00
|
|
|
# Run Chromium as archipelago user in a restart loop
|
|
|
|
|
while true; do
|
2026-03-31 02:42:44 +01:00
|
|
|
sudo -u archipelago env DISPLAY=:0 HOME=/home/archipelago chromium --kiosk \
|
|
|
|
|
--app=http://localhost/kiosk \
|
|
|
|
|
--noerrdialogs \
|
|
|
|
|
--disable-infobars \
|
|
|
|
|
--disable-translate \
|
|
|
|
|
--no-first-run \
|
|
|
|
|
--check-for-update-interval=31536000 \
|
2026-04-02 11:10:08 +01:00
|
|
|
--disable-features=TranslateUI,MetricsReporting,AutofillServerCommunication,PasswordManagerEnabled \
|
2026-03-31 02:42:44 +01:00
|
|
|
--disable-session-crashed-bubble \
|
|
|
|
|
--disable-save-password-bubble \
|
|
|
|
|
--disable-suggestions-service \
|
|
|
|
|
--disable-component-update \
|
|
|
|
|
--disable-gpu \
|
|
|
|
|
--disable-gpu-compositing \
|
|
|
|
|
--disable-gpu-rasterization \
|
|
|
|
|
--disable-software-rasterizer \
|
|
|
|
|
--num-raster-threads=1 \
|
|
|
|
|
--renderer-process-limit=1 \
|
|
|
|
|
--disable-background-networking \
|
|
|
|
|
--disable-background-timer-throttling \
|
|
|
|
|
--disable-backgrounding-occluded-windows \
|
fix: container DNS, nginx chown, onboarding guard, seed UX, install flow
Backend:
- Add --add-host host.containers.internal:host-gateway to LND and Bitcoin
Knots containers (fixes DNS resolution failure in rootless podman)
- Add --user 0:0 and DAC_OVERRIDE to nginx UI sidecar containers
(fixes chown crash in rootless podman for bitcoin-ui, electrs-ui, lnd-ui)
- Add hostadd to Rust Podman API client for web UI container installs
- Add Chromium privacy flags to kiosk launcher (disable telemetry)
Frontend:
- Fix onboarding reset on raw IP visits (trust localStorage as first-class
signal, skip boot screen when server is up but not onboarded)
- Fix seed regression: persist challenge indices in sessionStorage so going
back from Verify doesn't change which words are asked
- Remove glass container from seed Generate/Verify/Restore screens
- Add Back button to Restore from Seed screen
- Replace Network card: Tor (purple), VPN status (orange), Bitcoin sync (orange)
- Add ElectrumX to curated app list with correct .webp icon
- Install flow: navigate to My Apps immediately with toast, hide
installed/installing apps from marketplace and discover views
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 13:06:57 +01:00
|
|
|
--disable-breakpad \
|
|
|
|
|
--disable-metrics \
|
|
|
|
|
--disable-metrics-reporting \
|
|
|
|
|
--disable-domain-reliability \
|
2026-03-31 02:42:44 +01:00
|
|
|
--js-flags="--max-old-space-size=128" \
|
2026-04-02 11:10:08 +01:00
|
|
|
--user-data-dir=/var/lib/archipelago/chromium-kiosk
|
2026-03-12 12:56:59 +00:00
|
|
|
sleep 3
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Cleanup
|
|
|
|
|
kill $XPID 2>/dev/null
|