Initial commit: Chromium auto-start configuration for reTerminal DM4
This commit is contained in:
147
chromium-setup/README.md
Normal file
147
chromium-setup/README.md
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
# Chromium Auto-Start Configuration for Raspberry Pi
|
||||||
|
|
||||||
|
This directory contains scripts and configuration files to automatically start Chromium in fullscreen mode on boot for a Raspberry Pi device (reTerminal DM4).
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
- **`start-chromium.sh`** - Main startup script that launches Chromium with proper configuration
|
||||||
|
- **`chromium-kiosk.desktop`** - Autostart desktop entry file
|
||||||
|
- **`README.md`** - This documentation file
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This setup configures Chromium to:
|
||||||
|
- Start automatically on boot
|
||||||
|
- Open in fullscreen mode at `http://127.0.0.1:8080`
|
||||||
|
- Avoid keyring password prompts
|
||||||
|
- Prevent restore session notifications
|
||||||
|
- Properly fill the entire screen (fixes Wayland/X11 fullscreen issues)
|
||||||
|
- Support both fullscreen and kiosk modes (switchable via script)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
1. **SSH access** to the Raspberry Pi device
|
||||||
|
2. **Auto-login enabled** (required for autostart to work)
|
||||||
|
3. **Chromium installed**: `sudo apt-get install chromium`
|
||||||
|
4. **wmctrl installed**: `sudo apt-get install wmctrl` (for fullscreen forcing)
|
||||||
|
|
||||||
|
### Setup Steps
|
||||||
|
|
||||||
|
1. **Copy the startup script to the device:**
|
||||||
|
```bash
|
||||||
|
scp start-chromium.sh pi@<device-ip>:/home/pi/start-chromium.sh
|
||||||
|
ssh pi@<device-ip> "chmod +x /home/pi/start-chromium.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Create autostart directory and copy desktop file:**
|
||||||
|
```bash
|
||||||
|
ssh pi@<device-ip> "mkdir -p ~/.config/autostart"
|
||||||
|
scp chromium-kiosk.desktop pi@<device-ip>:/home/pi/.config/autostart/chromium-kiosk.desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Install wmctrl (if not already installed):**
|
||||||
|
```bash
|
||||||
|
ssh pi@<device-ip> "sudo apt-get update && sudo apt-get install -y wmctrl"
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Reboot to test:**
|
||||||
|
```bash
|
||||||
|
ssh pi@<device-ip> "sudo reboot"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Switching Between Fullscreen and Kiosk Mode
|
||||||
|
|
||||||
|
Edit `/home/pi/start-chromium.sh` on the device:
|
||||||
|
|
||||||
|
- **Fullscreen mode** (current): Uncomment the fullscreen line, comment out the kiosk line
|
||||||
|
- **Kiosk mode**: Comment out the fullscreen line, uncomment the kiosk line
|
||||||
|
|
||||||
|
### Changing the URL
|
||||||
|
|
||||||
|
Edit the `--app=http://127.0.0.1:8080` parameter in `start-chromium.sh` to point to your desired URL.
|
||||||
|
|
||||||
|
### Adjusting Delays
|
||||||
|
|
||||||
|
If Chromium doesn't start properly on boot, you may need to increase delays:
|
||||||
|
- Line 25: `sleep 5` - Delay before starting Chromium
|
||||||
|
- Line 32: `sleep 3` - Delay before forcing fullscreen
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Chromium doesn't start on boot
|
||||||
|
- Verify auto-login is enabled: `sudo raspi-config` → Boot Options → Desktop Autologin
|
||||||
|
- Check if the script is executable: `chmod +x ~/start-chromium.sh`
|
||||||
|
- Check autostart file exists: `ls -la ~/.config/autostart/chromium-kiosk.desktop`
|
||||||
|
|
||||||
|
### Fullscreen doesn't work properly
|
||||||
|
- Ensure `wmctrl` is installed: `sudo apt-get install wmctrl`
|
||||||
|
- Check if X11 is being used (not Wayland): The script forces X11 with `--ozone-platform=x11`
|
||||||
|
- Manually test: `DISPLAY=:0 ~/start-chromium.sh`
|
||||||
|
|
||||||
|
### Keyring password prompt appears
|
||||||
|
- The script includes `--password-store=basic --use-mock-keychain` flags
|
||||||
|
- If it still appears, you may need to set an empty password for the keyring once
|
||||||
|
|
||||||
|
### Restore session notification appears
|
||||||
|
- The script includes `--disable-session-crashed-bubble --disable-restore-session-state` flags
|
||||||
|
- If it still appears, clear Chromium's session data: `rm -rf ~/.config/chromium/Session*`
|
||||||
|
|
||||||
|
## Manual Testing
|
||||||
|
|
||||||
|
Test the script without rebooting:
|
||||||
|
```bash
|
||||||
|
ssh pi@<device-ip> "pkill chromium && sleep 2 && DISPLAY=:0 ~/start-chromium.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Exiting Fullscreen/Kiosk Mode
|
||||||
|
|
||||||
|
- **Fullscreen mode**: Press `F11` to toggle fullscreen, or `Alt+F4` to close
|
||||||
|
- **Kiosk mode**: Use `Ctrl+Alt+T` to open terminal, then `pkill chromium`
|
||||||
|
- **From SSH**: `ssh pi@<device-ip> "pkill chromium"`
|
||||||
|
|
||||||
|
## Disabling Autostart
|
||||||
|
|
||||||
|
To temporarily disable autostart:
|
||||||
|
```bash
|
||||||
|
ssh pi@<device-ip> "mv ~/.config/autostart/chromium-kiosk.desktop ~/.config/autostart/chromium-kiosk.desktop.disabled"
|
||||||
|
```
|
||||||
|
|
||||||
|
To re-enable:
|
||||||
|
```bash
|
||||||
|
ssh pi@<device-ip> "mv ~/.config/autostart/chromium-kiosk.desktop.disabled ~/.config/autostart/chromium-kiosk.desktop"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Chromium Flags Explained
|
||||||
|
|
||||||
|
- `--start-fullscreen` - Start in fullscreen mode
|
||||||
|
- `--kiosk` - Kiosk mode (no UI, harder to exit)
|
||||||
|
- `--noerrdialogs` - Suppress error dialogs
|
||||||
|
- `--disable-infobars` - Remove info bars
|
||||||
|
- `--disable-session-crashed-bubble` - Disable crash notifications
|
||||||
|
- `--disable-restore-session-state` - Don't restore previous session
|
||||||
|
- `--no-first-run` - Skip first-run dialogs
|
||||||
|
- `--password-store=basic` - Use unencrypted password store (no keyring)
|
||||||
|
- `--use-mock-keychain` - Avoid keychain prompts
|
||||||
|
- `--ozone-platform=x11` - Force X11 instead of Wayland (better fullscreen)
|
||||||
|
- `--app=<url>` - Run as app (no address bar, cleaner interface)
|
||||||
|
|
||||||
|
## Device Information
|
||||||
|
|
||||||
|
- **Device**: reTerminal DM4 (Raspberry Pi)
|
||||||
|
- **OS**: Raspberry Pi OS (Debian-based)
|
||||||
|
- **Tested on**: Linux raspberrypi 6.12.62+rpt-rpi-v8
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- The script waits for the desktop environment to be ready before starting Chromium
|
||||||
|
- It uses `wmctrl` to programmatically force fullscreen after Chromium starts
|
||||||
|
- X11 is forced instead of Wayland for better fullscreen compatibility
|
||||||
|
- The script runs in the background and maintains the Chromium process
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This configuration is provided as-is for use with the reTerminal DM4 project.
|
||||||
7
chromium-setup/chromium-kiosk.desktop
Normal file
7
chromium-setup/chromium-kiosk.desktop
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Chromium Fullscreen
|
||||||
|
Exec=/home/pi/start-chromium.sh
|
||||||
|
Hidden=false
|
||||||
|
NoDisplay=false
|
||||||
|
X-GNOME-Autostart-enabled=true
|
||||||
46
chromium-setup/start-chromium.sh
Executable file
46
chromium-setup/start-chromium.sh
Executable file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Disable keyring prompts
|
||||||
|
export GNOME_KEYRING_CONTROL=""
|
||||||
|
export DISPLAY=:0
|
||||||
|
|
||||||
|
# Force X11 instead of Wayland for better fullscreen support
|
||||||
|
export GDK_BACKEND=x11
|
||||||
|
unset WAYLAND_DISPLAY
|
||||||
|
|
||||||
|
# Wait for display and desktop environment to be ready
|
||||||
|
# Check if DISPLAY is accessible (wait up to 30 seconds)
|
||||||
|
for i in {1..60}; do
|
||||||
|
if xset q >/dev/null 2>&1 || [ -n "$DISPLAY" ]; then
|
||||||
|
# Wait for desktop environment to be fully loaded
|
||||||
|
if pgrep -x pcmanfm >/dev/null 2>&1 || pgrep -x lxsession >/dev/null 2>&1 || pgrep -x xfdesktop >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
|
||||||
|
# Additional delay to ensure window manager is fully ready
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Start Chromium with flags to avoid keyring and ensure proper fullscreen
|
||||||
|
# Force X11 platform and add fullscreen-related flags
|
||||||
|
# Fullscreen mode (current active)
|
||||||
|
/usr/bin/chromium --start-fullscreen --noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-restore-session-state --no-first-run --password-store=basic --use-mock-keychain --ozone-platform=x11 --disable-features=UseChromeOSDirectVideoDecoder --app=http://127.0.0.1:8080 &
|
||||||
|
|
||||||
|
# Wait for Chromium window to appear and then force fullscreen
|
||||||
|
sleep 3
|
||||||
|
# Try to find Chromium window and force it to fullscreen
|
||||||
|
for i in {1..10}; do
|
||||||
|
WINDOW_ID=$(wmctrl -l 2>/dev/null | grep -i chromium | head -1 | awk '{print $1}')
|
||||||
|
if [ -n "$WINDOW_ID" ]; then
|
||||||
|
wmctrl -i -r "$WINDOW_ID" -b add,fullscreen 2>/dev/null
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
|
||||||
|
# Keep script running
|
||||||
|
wait
|
||||||
|
|
||||||
|
# Kiosk mode (commented out - uncomment to use instead of fullscreen)
|
||||||
|
# /usr/bin/chromium --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-restore-session-state --no-first-run --password-store=basic --use-mock-keychain --ozone-platform=x11 --app=http://127.0.0.1:8080
|
||||||
Reference in New Issue
Block a user