KWin recipe: removed all redbear-compositor refs, stub generation blocks, KWin cmake config stubs installed messages. Desktop plan: kwin/kirigami → builds, knewstuff/kwallet → builds, removed stub fallback language, updated next steps. Wayland plan: KWin reduced-feature real build, bounded runtime proof. DBUS plan: KWin real build surface, compositor-session proof updated. 42 commits. All Oracle specifications from rounds 12-13 implemented.
10 KiB
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 | builds | enabled | Reduced-feature real cmake build; runtime proof requires Qt6Quick/QML downstream validation |
| 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 | builds, suppressed | suppressed | Real core-only cmake build; QML runtime gated; gated on Qt6Quick downstream proof |
| kf6-knewstuff | builds | enabled | Real NewStuffCore cmake build; QML disabled |
| kf6-kwallet | builds | enabled | Real API-only core wallet cmake build; QML/GPG disabled |
| 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 |
| KWin runtime proof | Compositor | Reduced-feature real build exists; bounded runtime proof requires Qt6Quick downstream validation |
| 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; QML disabled; 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 (reduced-feature real cmake build) + redbear-compositor (bounded validation 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)
-
Rebuild full OS image —
make all CONFIG_NAME=redbear-full(harddrive.img for QEMU) ormake live CONFIG_NAME=redbear-full(ISO for bare metal); existing artifacts at build/x86_64/ -
Qt6Quick/QML runtime proof — validate Qt6Quick downstream consumers with QML JIT disabled for Redox; unblocks kirigami → real KWin → full Plasma session
-
GPU CS ioctl implementation — implement command submission in redox-drm; unblocks hardware rendering path
-
Mesa HW renderer cross-compilation — build radeonsi/iris for Redox target; requires CS ioctl for validation
-
Real KWin build — validate the reduced-feature real KWin build on the Qt6Quick/QML downstream path; unblocks full KDE Plasma session
-
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.