diff --git a/TODO.MD b/TODO.MD index b597f71..07bd78c 100644 --- a/TODO.MD +++ b/TODO.MD @@ -1,5 +1,12 @@ - -- change icon on taskbar. -- fix dark theme. -- check for duplicates commands in all scripts and cloud init during deployment. +- [x] change icon on taskbar (PiXtrix icon theme + icon cache rebuild). +- [x] fix dark theme (Adwaita-dark, gtk-3.0/settings.ini, gsettings at login). +- [x] check for duplicates commands in all scripts and cloud init during deployment. +- [x] fix rotation race (kanshi config pre-created in step 11, restart in login/oneshot scripts). +- [x] fix five-tap overlay for Wayland (layer-shell, gir1.2-gtklayershell-0.1). +- [x] add VNC (wayvnc) to provisioning (step 06). +- [x] add touch-friendly Chromium flags (start-chromium.sh). +- [x] add no-select extension to prevent text selection in kiosk (chromium-kiosk-no-select/). +- [x] fix curl timeout in report_status (first-boot.sh). +- [ ] test text selection fix on different websites. +- [ ] verify five-tap overlay works on device after full provision. diff --git a/emmc-provisioning/README.md b/emmc-provisioning/README.md index 39c77f5..eb3727f 100644 --- a/emmc-provisioning/README.md +++ b/emmc-provisioning/README.md @@ -25,24 +25,23 @@ emmc-provisioning/ ├── scripts/ Deployment and one-off scripts │ ├── deploy-to-proxmox.sh Deploy to Proxmox host + LXC │ ├── sync-portal-files-to-lxc.sh Sync cloud-init/first-boot assets to file server (LXC) -│ ├── setup-network-boot-on-lxc.sh Configure PXE/dnsmasq for network boot -│ ├── install-usbboot-on-host.sh Build and install rpiboot on the host +│ ├── deploy-dashboard-to-lxc.sh Deploy dashboard to LXC │ └── ... (other deploy/monitor scripts) ├── dashboard/ Flask web UI (runs in LXC or standalone) │ ├── app.py │ └── README.md ├── cloud-init/ First-boot and file-server assets -│ ├── first-boot.sh Main first-boot script (run by cloud-init) -│ ├── first-boot.md Documentation for first-boot.sh -│ ├── start-chromium.sh Chromium kiosk launcher (→ file server) -│ ├── user-data-remote-gnss.example Example cloud-init user-data (curl first-boot.sh) -│ ├── config-files/ LightDM, Maliit, one-shots (.desktop + scripts) -│ │ ├── chromium-kiosk.desktop -│ │ ├── 01-set-rotation-once.desktop -│ │ ├── 02-set-wallpaper-once.desktop -│ │ └── ... -│ ├── files-from-guard/ Plymouth, splash assets; README of required files -│ └── fix-reterminal-display.sh One-time fix script (splash, rotation, wallpaper) +│ ├── first-boot.sh Main first-boot script (two-phase provisioning) +│ ├── first-boot.conf Active config (not committed with secrets) +│ ├── first-boot.conf.example Reference config +│ ├── user-data-remote-gnss.example Example cloud-init user-data +│ └── fileserver/ Assets served by the portal file server +│ ├── README.md Layout reference +│ ├── steps/ Step scripts (01–13) sourced by first-boot.sh +│ ├── chromium-kiosk-no-select/ Chromium extension (disable text selection) +│ ├── start-chromium.sh Chromium kiosk launcher +│ ├── five-tap-close-chromium.py 5-tap overlay (Wayland layer-shell) +│ └── ... Desktop files, config, theme, splash ├── lxc/ LXC config snippets (dnsmasq, nftables) └── network-client/ For network-booted devices ├── provisioning-client.sh Register + poll, then Deploy or Backup diff --git a/emmc-provisioning/cloud-init/fileserver/README.md b/emmc-provisioning/cloud-init/fileserver/README.md index 349a62d..df40505 100644 --- a/emmc-provisioning/cloud-init/fileserver/README.md +++ b/emmc-provisioning/cloud-init/fileserver/README.md @@ -15,15 +15,15 @@ Sync to the LXC with: | Path | Purpose | |------|---------| | `steps/01-hostname.sh` … `steps/13-reboot.sh` | Step scripts sourced by `first-boot.sh` | -| `start-chromium.sh` | Chromium kiosk launcher | -| `five-tap-close-chromium.py` | 5-tap overlay to close Chromium | +| `start-chromium.sh` | Chromium kiosk launcher (touch-friendly flags) | +| `five-tap-close-chromium.py` | 5-tap overlay to close Chromium (Wayland layer-shell) | | `chromium-kiosk.desktop` | Autostart for Chromium kiosk | | `chromium-kiosk-launcher.desktop` | Desktop icon to restart Chromium | | `five-tap-close-chromium.desktop` | Autostart for the 5-tap overlay | -| `set-rotation-at-login.sh` / `.desktop` | Per-login kanshi rotation from cmdline | -| `01-set-rotation-once.sh` / `.desktop` | One-shot: first-login rotation + dark theme | +| `chromium-kiosk-no-select/` | Chromium extension: disables text selection for kiosk | +| `set-rotation-at-login.sh` / `.desktop` | Per-login kanshi rotation + kanshi restart | +| `01-set-rotation-once.sh` / `.desktop` | One-shot: first-login rotation + dark theme + kanshi restart | | `02-set-wallpaper-once.sh` / `.desktop` | One-shot: wallpaper via swaybg | -| `fix-reterminal-display.sh` | Utility: re-apply DSI driver fix | | `99-default-session.conf` | LightDM → rpd-labwc session | | `99-wallpaper.conf` | LightDM greeter wallpaper | | `maliit-keyboard.desktop` | Maliit on-screen keyboard autostart | diff --git a/emmc-provisioning/cloud-init/fileserver/touchscreen-touch-only.quirks b/emmc-provisioning/cloud-init/fileserver/touchscreen-touch-only.quirks deleted file mode 100644 index c964c39..0000000 --- a/emmc-provisioning/cloud-init/fileserver/touchscreen-touch-only.quirks +++ /dev/null @@ -1,11 +0,0 @@ -# libinput local overrides: make touchscreen touch-only (no pointer emulation). -# Prevents touch-drag from being interpreted as mouse selection in Chromium. -# Match reTerminal DM Goodix touchscreen; disables INPUT_PROP_POINTER so -# libinput sends only touch events — scrolling works, text selection does not. -# -# Install to: /etc/libinput/local-overrides.quirks -# Then: udevadm trigger (or reboot). See device-quirks.html in libinput doc. - -[Touchscreen touch-only for kiosk] -MatchName=*Goodix*TouchScreen* -AttrInputProp=-INPUT_PROP_POINTER diff --git a/emmc-provisioning/scripts/bump-revision.sh b/emmc-provisioning/scripts/bump-revision.sh index 5976e34..2f6a727 100644 --- a/emmc-provisioning/scripts/bump-revision.sh +++ b/emmc-provisioning/scripts/bump-revision.sh @@ -28,11 +28,11 @@ TRACKED=( emmc-provisioning/dashboard/templates/portal_files.html emmc-provisioning/cloud-init/first-boot.sh emmc-provisioning/cloud-init/first-boot.conf - emmc-provisioning/cloud-init/start-chromium.sh - emmc-provisioning/cloud-init/01-set-rotation-once.sh - emmc-provisioning/cloud-init/02-set-wallpaper-once.sh - emmc-provisioning/cloud-init/set-rotation-at-login.sh - emmc-provisioning/cloud-init/fix-reterminal-display.sh + emmc-provisioning/cloud-init/fileserver/start-chromium.sh + emmc-provisioning/cloud-init/fileserver/01-set-rotation-once.sh + emmc-provisioning/cloud-init/fileserver/02-set-wallpaper-once.sh + emmc-provisioning/cloud-init/fileserver/set-rotation-at-login.sh + emmc-provisioning/cloud-init/fileserver/five-tap-close-chromium.py emmc-provisioning/scripts/deploy-to-proxmox.sh emmc-provisioning/scripts/deploy-dashboard-to-lxc.sh emmc-provisioning/scripts/sync-portal-files-to-lxc.sh diff --git a/emmc-provisioning/scripts/pre-commit-revision.sh b/emmc-provisioning/scripts/pre-commit-revision.sh index a7f5a14..66368a3 100644 --- a/emmc-provisioning/scripts/pre-commit-revision.sh +++ b/emmc-provisioning/scripts/pre-commit-revision.sh @@ -25,11 +25,11 @@ git add emmc-provisioning/scripts/bump-revision.sh \ emmc-provisioning/dashboard/templates/portal_files.html \ emmc-provisioning/cloud-init/first-boot.sh \ emmc-provisioning/cloud-init/first-boot.conf \ - emmc-provisioning/cloud-init/start-chromium.sh \ - emmc-provisioning/cloud-init/01-set-rotation-once.sh \ - emmc-provisioning/cloud-init/02-set-wallpaper-once.sh \ - emmc-provisioning/cloud-init/set-rotation-at-login.sh \ - emmc-provisioning/cloud-init/fix-reterminal-display.sh \ + emmc-provisioning/cloud-init/fileserver/start-chromium.sh \ + emmc-provisioning/cloud-init/fileserver/01-set-rotation-once.sh \ + emmc-provisioning/cloud-init/fileserver/02-set-wallpaper-once.sh \ + emmc-provisioning/cloud-init/fileserver/set-rotation-at-login.sh \ + emmc-provisioning/cloud-init/fileserver/five-tap-close-chromium.py \ emmc-provisioning/scripts/deploy-to-proxmox.sh \ emmc-provisioning/scripts/deploy-dashboard-to-lxc.sh \ emmc-provisioning/scripts/sync-portal-files-to-lxc.sh \