# Red Bear OS: Console to Hardware-Accelerated KDE Desktop on Wayland **Version:** 3.0 (2026-04-29) **Replaces:** v2.2 and all prior desktop-path documents **Status:** Canonical desktop path plan — OLW-drafted, build-verified ## Purpose This is the single authoritative plan for the Red Bear OS path from console boot to a hardware-accelerated KDE Plasma desktop running on Wayland. It is rewritten in v3.0 based on a full end-to-end reassessment of every component in the chain: DRM/KMS → Mesa → Wayland Compositor → Input/Seat → Greeter/Login → KDE Plasma. This plan answers: **what is the current state of every layer, what are the honest blockers, and what must happen, in what order, to reach a usable KDE Plasma desktop.** ## Full Chain Assessment (2026-04-29) ### LAYER 1 — DRM/KMS | Component | Status | Config | Notes | |-----------|--------|--------|-------| | redox-drm | **builds** | enabled | Intel Gen8-Gen12 + AMD device support + quirk tables; MSI-X/legacy IRQ fallback; no hardware validation | | libdrm | **builds** | enabled | Provides libdrm_amdgpu; amdgpu device support | | firmware-loader | **builds** | enabled | scheme:firmware; blob loading verified | | GPU firmware | **fetched** | partial | amdgpu/i915 blobs available via fetch-firmware.sh | | virtio-gpu | **builds** | in redox-drm | 220-line DRM/KMS backend for QEMU testing | | CS ioctl | **missing** | — | GPU command submission not implemented; gating hardware rendering | **Verdict**: Display infrastructure exists. Hardware rendering blocked on CS ioctl + hardware validation. ### LAYER 2 — Mesa/Graphics | Component | Status | Config | Notes | |-----------|--------|--------|-------| | mesa | **builds** | enabled | llvmpipe software renderer; EGL=on, GBM=on, GLES2=on, platform=redox | | radeonsi (AMD HW) | **not built** | — | Not cross-compiled for Redox target | | iris (Intel HW) | **not built** | — | Not cross-compiled for Redox target | | OSMesa | **builds** | enabled | Off-screen software rendering | **Verdict**: Software rendering works (llvmpipe). Hardware renderers need cross-compilation + CS ioctl. ### LAYER 3 — Wayland/Compositor | Component | Status | Config | Notes | |-----------|--------|--------|-------| | libwayland 1.24.0 | **builds** | enabled | Wayland protocol library; durability patch applied | | wayland-protocols | **builds** | enabled | Protocol XML definitions | | redbear-compositor | **builds, 788 lines** | enabled | Real Rust Wayland compositor; zero warnings; 3/3 tests; known limitations: heap-memory framebuffer, payload-byte SHM, NUL-terminated wire encoding | | kwin | **stub** | enabled | cmake configs + kwin_wayland_wrapper delegating to redbear-compositor; real KWin requires Qt6Quick downstream proof | | redbear-compositor-check | **builds** | in redbear-compositor pkg | Verifies compositor socket, binaries, framebuffer | **Verdict**: Working bounded compositor proof. Real KWin gated on Qt6Quick/QML downstream proof. ### LAYER 4 — Input/Seat | Component | Status | Config | Notes | |-----------|--------|--------|-------| | evdevd | **builds** | enabled | scheme:evdev; 65 unit tests; event device semantics verified | | libinput | **builds, suppressed** | config: `libinput = "ignore"` | Builds but suppressed in redbear-full; evdevd handles input natively for bounded proof | | udev-shim | **builds** | enabled | scheme:udev; device enumeration; 15 unit tests | | seatd/seatd-redox | **builds** | enabled | meson build; 13_seatd.service wired; DRM lease via redox-drm | | libevdev | **suppressed** | commented | build needed header | **Verdict**: Input path works through evdevd + udev-shim. seatd wired for compositor seat access. libinput deferred (not needed for bounded proof). ### LAYER 5 — Greeter/Login | Component | Status | Config | Notes | |-----------|--------|--------|-------| | redbear-authd | **builds** | enabled | SHA-crypt/Argon2 auth; /etc/passwd + /etc/shadow | | redbear-session-launch | **builds** | enabled | Session bootstrap (uid/gid/env/runtime-dir) | | redbear-greeter | **builds** | enabled | greeterd orchestrator + Qt6/QML UI + compositor wrapper | | redbear-sessiond | **builds** | enabled | org.freedesktop.login1 D-Bus broker (zbus) | | dbus | **builds** | enabled | 1.16.2; system bus wired; session bus partially | | Greeter QEMU proof | **passes** | — | GREETER_HELLO=ok, GREETER_VALID=ok, GREETER_INVALID=ok | | redbear-kde-session | **builds** | enabled | KDE session launcher (DRM/virtual backend, plasmashell/kded6) | **Verdict**: Greeter/login path works end-to-end in QEMU with bounded proof. KDE session launcher ready. ### LAYER 6 — KDE/Plasma | Component | Status | Config | Notes | |-----------|--------|--------|-------| | qtbase 6.11.0 | **builds** | enabled | Core+Gui+Widgets+DBus+Wayland; 7 libs + 12 plugins | | qtdeclarative | **builds** | enabled | Qt6Quick metadata exported; QML JIT disabled for Redox; downstream proof insufficient | | qtwayland | **builds** | enabled | Wayland QPA plugin | | qtsvg | **builds** | enabled | SVG support | | KF6 frameworks (30/32) | **build real** | 22 enabled + kglobalacceld | 30 real cmake builds; knewstuff/kwallet now have real cmake attempts; 1 suppressed (kirigami, QML-dependent) | | kf6-kio | **honest build** | enabled | KIOCore-only; local Redox compat headers; no sysroot fakery | | kirigami | **stub** | suppressed | QML-dependent; gated on Qt6Quick downstream proof | | kf6-knewstuff | **real build attempt** | enabled | NewStuffCore cmake build; QML disabled; stub fallback if configure fails | | kf6-kwallet | **real build attempt** | enabled | Core wallet cmake build; QML/GPG disabled; stub fallback | | plasma-framework | **builds** | enabled | BUILD_WITH_QML=OFF | | plasma-workspace | **builds** | enabled | 52 dependency items | | plasma-desktop | **builds** | enabled | Depends on plasma-workspace | | kdecoration | **builds** | transitively via plasma-workspace | Window decoration library | | kf6-kwayland | **builds** | enabled | Qt/C++ Wayland protocol wrapper | | plasma-wayland-protocols | **builds** | transitively | XML protocol definitions | **Verdict**: KDE/Plasma surface enabled (20 KF6 + plasma packages). Real Plasma session requires Qt6Quick downstream proof + real KWin. ### LAYER 7 — Validation Infrastructure | Artifact | Count | Status | |----------|-------|--------| | Phase 1-5 check binaries | 15+ | Zero warnings, Redox-target verified | | Test harness scripts | 12 | Syntax-clean, guest+QEMU modes | | Oracle verification rounds | 20+ | Phases 1-5 all verified | | Host cargo check | 3 crates | Zero warnings | | Redox-target build | 3 crates | Successful (make r.*) | | Full OS build | exists | build/x86_64/redbear-full.iso + .img available; rebuild via make all CONFIG_NAME=redbear-full | ## Honest Blocker Classification ### Implementation Blockers (code still needed) | Blocker | Layer | Impact | |---------|-------|--------| | GPU CS ioctl | DRM | Hardware rendering impossible without command submission | | Mesa HW renderers cross-compilation | Mesa | radeonsi/iris not built for Redox target | | Real KWin build | Compositor | Stub delegates to redbear-compositor; needs Qt6Quick downstream proof | | kirigami real build | KDE | QML-dependent; needs Qt6Quick downstream proof | ### Environmental Blockers (need toolchain/hardware) | Blocker | What's needed | |---------|---------------| | Qt6Quick/QML downstream proof | Qt6Quick/QML runtime proof (QML JIT disabled for Redox); blocks kirigami + real KWin + Plasma | | Hardware GPU validation | Real AMD/Intel GPU; blocks CS ioctl vendor semantics + Mesa HW renderers | | Bare-metal validation | Real hardware; blocks all hardware claims | ### Deferred (not on critical path for minimal session proof) | Item | Reason | |------|--------| | kf6-knewstuff/kwallet | real cmake builds attempted; stub fallback if cmake fails; not on critical path for minimal session | | libinput | evdevd handles input natively for bounded proof; libinput builds but suppressed in config | | libevdev | header build needed; not blocking | ## Critical Path (updated) ``` Layer 1 (DRM) ▸ Layer 2 (Mesa sw) ▸ Layer 3 (compositor proof) ▸ Layer 4 (input/seat) ▸ Layer 5 (greeter) ✓ ▸ Layer 6 (Plasma preflight) ✓ Blocked gate: Layer 3 (real KWin) ← Qt6Quick/QML downstream proof Blocked gate: Layer 1 (GPU CS ioctl) ← hardware + Mesa HW cross-compilation ``` ## Current Config Surface `config/redbear-full.toml` enables the full desktop-capable surface including: - 22 KF6 frameworks + kglobalacceld - 3 Plasma packages (framework, workspace, desktop) - kwin (stub with wrapper scripts) + redbear-compositor (real Rust compositor) - mesa + libdrm - qtbase + qtdeclarative + qtwayland + qtsvg + qt6-wayland-smoke - seatd + redbear-authd + redbear-session-launch + redbear-greeter + redbear-sessiond (via redbear-mini) - dbus + firmware-loader + redox-drm + evdevd + udev-shim - plus inherited packages from redbear-mini profile ## Next Steps (ordered by impact) 1. **Rebuild full OS image** — `make all CONFIG_NAME=redbear-full` (harddrive.img for QEMU) or `make live CONFIG_NAME=redbear-full` (ISO for bare metal); existing artifacts at build/x86_64/ 2. **Qt6Quick/QML runtime proof** — validate Qt6Quick downstream consumers with QML JIT disabled for Redox; unblocks kirigami → real KWin → full Plasma session 3. **GPU CS ioctl implementation** — implement command submission in redox-drm; unblocks hardware rendering path 4. **Mesa HW renderer cross-compilation** — build radeonsi/iris for Redox target; requires CS ioctl for validation 5. **Real KWin build** — once Qt6Quick downstream proof exists, replace stub with real cmake build; unblocks full KDE Plasma session 6. **Hardware validation** — AMD + Intel bare-metal testing for all layers ## Evidence Model | Evidence class | What it means | |----------------|---------------| | **Source** | Code exists in tree | | **Host build-verified** | cargo check zero warnings on Linux | | **Redox build-verified** | make r.* successful on x86_64-unknown-redox | | **Runtime-validated** | Exercised in QEMU or bare metal | | **Hardware-validated** | Exercised on real AMD/Intel hardware | Current state: Layers 1-4 are **Redox build-verified** (all 3 Red Bear crates cook on x86_64-unknown-redox). Layer 5 (greeter) is **runtime-validated** in QEMU. Layer 6 (Plasma) and hardware paths remain at build-verified preflight level.