sudo apt update && sudo apt upgrade and sudo reboot to get the latest and greatest of the software.
After that the Pi must be configured to boot into CLI-mode and log in.
sudo raspi-config.
Choose System options -> Boot / Auto Login -> B2 Console Autologin
Install xserver and openbox (probably already installed) with sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox
and then Chromium browser (also probably already installed) with sudo apt-get install --no-install-recommends chromium-browser.
sudo vim /etc/xdg/openbox/autostart. Add the following content:
# Configuration
WEBSITE_URL="https://PUT_YOUR_WEBSITE_ADDRESS_HERE"
# Disable screensaver, screen blanking, and power management
xset s off
xset s noblank
xset -dpms
# Auto-detect screen resolution
RESOLUTION=$(xrandr 2>/dev/null | grep '*' | awk '{print $1}')
if [ -z "$RESOLUTION" ]; then
RESOLUTION="1920x1080" # Default fallback can be ="1280x720"
fi
SCREEN_WIDTH=$(echo $RESOLUTION | cut -d 'x' -f1)
SCREEN_HEIGHT=$(echo $RESOLUTION | cut -d 'x' -f2)
echo "Detected screen resolution: ${SCREEN_WIDTH}x${SCREEN_HEIGHT}"
# Check internet connection using ping before launching Chromium
if ping -c 1 -W 2 google.com >/dev/null 2>&1; then
echo "Internet connected. Proceeding with Chromium launch."
else
echo "No internet connection detected. Exiting."
fi
# Allow quitting the X server with CTRL-ALT-Backspace
# setxkbmap -option terminate:ctrl_alt_bksp
# Prevent Chromium restore prompts
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
# Clean up Chromium cache, cookies, and logs
find ~/.config/chromium/Default/ -type f \( -name "Cookies" -o -name "History" -o -name "*.log" -o -name "*.ldb" -o -name "*.sqlite" \) -delete
rm -rf ~/.config/chromium/Default/Logs/*
# Clear system logs
sudo journalctl --vacuum-time=1d
sudo find /var/log -type f \( -name "*.log" -o -name "*.gz" -o -name "*.1" \) -delete
sudo truncate -s 0 /var/log/syslog /var/log/dmesg
# Kill any existing Chromium instances
pkill -9 chromium-browser 2>/dev/null
pkill -9 chrome 2>/dev/null
# Start Chromium in kiosk mode
chromium-browser --kiosk --disable-gpu --noerrdialogs --disable-infobars --disable-features=TranslateUI \
--disable-session-crashed-bubble --no-sandbox --disable-notifications --disable-sync-preferences \
--disable-background-mode --disable-popup-blocking --no-first-run \
--enable-gpu-rasterization --disable-translate --disable-logging --disable-default-apps \
--disable-extensions --disable-crash-reporter --disable-pdf-extension --disable-new-tab-first-run \
--disable-dev-shm-usage --start-maximized --mute-audio --disable-crashpad --hide-scrollbars \
--ash-hide-cursor --memory-pressure-off --force-device-scale-factor=1 --window-position=0,0 \
--window-size=${SCREEN_WIDTH},${SCREEN_HEIGHT} "$WEBSITE_URL" &
if [ $? -eq 0 ]; then
echo "Chromium started successfully."
else
echo "Failed to start Chromium."
sudo reboot
fi
And then sudo vim .bash_profile and add the following: add [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor
And finally a crucial step (without this the normal desktop environment is launched): sudo update-alternatives --config x-session-manager and choose "/usr/bin/openbox-session".
:(