# Runtime and Configuration ## Backend Resolution CLI option: ```text scanslicer --backend {auto,wayland,x11} ``` Resolution order when `--backend auto`: 1. `QT_QPA_PLATFORM` explicit hint (`wayland`, `xcb`, `x11`) 2. `XDG_SESSION_TYPE` (`wayland` or `x11`) 3. Wayland socket presence (`XDG_RUNTIME_DIR` + `WAYLAND_DISPLAY`) 4. `DISPLAY` presence (X11) 5. fallback to Wayland ## Backend Validation - Wayland requires: - `XDG_RUNTIME_DIR` - `WAYLAND_DISPLAY` - existing socket at `$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY` - X11 requires: - `DISPLAY` On startup failure, ScanSlicer prints backend-specific hints to stderr. ## Qt Environment Adjustments - For Wayland mode: - sets `QT_QPA_PLATFORM=wayland` - unsets `DISPLAY` to avoid accidental XWayland routing - For X11 mode: - sets `QT_QPA_PLATFORM=xcb` - In Flatpak/Snap: - defaults `QT_QPA_PLATFORMTHEME=xdgdesktopportal` - In AppImage: - defaults `QT_QPA_PLATFORMTHEME=gtk3` - sets `QT_NO_XDG_DESKTOP_PORTAL=1` - In container (`/.dockerenv`): - defaults `QT_QPA_PLATFORMTHEME=gtk3` ## Persistence Paths ### Defaults and presets - Defaults JSON: - host: `~/.config/scanslicer/defaults.json` - container: `/work/.scanslicer/defaults.json` - override: `SCANSLICER_DEFAULTS_PATH` - Presets JSON: - host: `~/.config/scanslicer/presets.json` - container: `/work/.scanslicer/presets.json` - override: `SCANSLICER_PRESETS_PATH` ### Auto-tune feedback - host: `~/.config/scanslicer/autotune-feedback.json` - container: `/work/.scanslicer/autotune-feedback.json` - override: `SCANSLICER_FEEDBACK_PATH` ### Status log - host: `~/.config/scanslicer/status.log` - container: `/work/.scanslicer/status.log` - override: `SCANSLICER_STATUS_LOG_PATH` Legacy override names are still accepted for backward compatibility. Status log behavior: - new app launch truncates and starts a fresh session log - batched flushing by time and queue size ## Container Runtime Notes `docker-compose.yml` expects desktop/session wiring: - `UID`, `GID` for correct file ownership - `XDG_RUNTIME_DIR`, `WAYLAND_DISPLAY` - mounted Wayland socket and DBus session bus - host home mounted at `/host-home` - project mounted at `/work` See `.env.example` for a baseline.