diff --git a/docs/README.md b/docs/README.md index 1d3fdd4d7b..1f23c161e4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,7 +5,7 @@ Technical documentation for Red Bear OS as an overlay distribution on top of Red This index is the entry point for the documentation set. Its main job is to make the current/canonical versus historical/reference split obvious. -> **Status note (2026-04-30):** The canonical desktop path document is +> **Status note (2026-05-01):** The canonical desktop path document is > `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` (v4.0, single comprehensive plan). It supersedes > all earlier individual assessments and is the single authority for current state. > The historical docs below (01–05) remain useful for architecture reference and implementation diff --git a/local/AGENTS.md b/local/AGENTS.md index c6d73ab470..c5e7fed2f2 100644 --- a/local/AGENTS.md +++ b/local/AGENTS.md @@ -183,8 +183,8 @@ redox-master/ ← git pull updates mainline Redox │ │ │ ├── redbear-session-launch ← session bootstrap helper (uid/gid/env/runtime-dir handoff) │ │ │ ├── redbear-greeter ← greeter orchestrator package (`redbear-greeterd`, UI, compositor wrapper, staged assets) │ │ │ ├── redbear-dbus-services ← D-Bus .service activation files + XML policies -│ │ ├── wayland/ ← Wayland compositor (v2.0 Phase 2) -│ │ └── kde/ ← KDE Plasma (v2.0 Phases 3–4) +│ │ ├── wayland/ ← Wayland compositor (Phase 2) +│ │ └── kde/ ← KDE Plasma (Phases 3–4) │ ├── patches/ │ │ ├── kernel/ ← Kernel patches (ACPI, x2APIC) │ │ ├── base/ ← Base patches (acpid fixes, power methods, pcid /config endpoint) @@ -253,7 +253,7 @@ scripts/build-iso.sh redbear-grub # Text-only + GRUB # Then run inside the guest: # ./local/scripts/test-vm-network-runtime.sh -# Phase 1 runtime-substrate validation (v2.0 plan: relibc headers, evdevd, udev-shim, +# Phase 1 runtime-substrate validation (canonical plan: CONSOLE-TO-KDE v4.0) # firmware-loader, DRM/KMS, time — covers acceptance areas + POSIX compat) ./local/scripts/test-phase1-runtime.sh --qemu redbear-full diff --git a/local/patches/redox-drm/P5-virtio-auto-probe.patch b/local/patches/redox-drm/P5-virtio-auto-probe.patch index 6c968c0618..6cbcc697dd 100644 --- a/local/patches/redox-drm/P5-virtio-auto-probe.patch +++ b/local/patches/redox-drm/P5-virtio-auto-probe.patch @@ -1,5 +1,5 @@ diff --git a/local/recipes/gpu/redox-drm/source/src/main.rs b/local/recipes/gpu/redox-drm/source/src/main.rs -index 612a64e0f..f4abdc7bb 100644 +index 612a64e0f..7af80bd75 100644 --- a/local/recipes/gpu/redox-drm/source/src/main.rs +++ b/local/recipes/gpu/redox-drm/source/src/main.rs @@ -168,9 +168,9 @@ fn select_gpu_from_args() -> Result { @@ -14,3 +14,12 @@ index 612a64e0f..f4abdc7bb 100644 })?; let mut pci = PciDevice::open_location(&first.location) .map_err(|e| DriverError::Pci(format!("failed to open GPU {}: {e}", first.location)))?; +@@ -205,7 +205,7 @@ fn verify_supported_gpu(info: &PciDeviceInfo) -> Result<()> { + ))); + } + +- if info.vendor_id != PCI_VENDOR_ID_AMD && info.vendor_id != PCI_VENDOR_ID_INTEL { ++ if info.vendor_id != PCI_VENDOR_ID_AMD && info.vendor_id != PCI_VENDOR_ID_INTEL && info.vendor_id != 0x1AF4 { + return Err(DriverError::Pci(format!( + "device {} is vendor {:#06x}, expected AMD {:#06x} or Intel {:#06x}", + info.location, info.vendor_id, PCI_VENDOR_ID_AMD, PCI_VENDOR_ID_INTEL diff --git a/local/recipes/gpu/redox-drm/P5-virtio-auto-probe.patch b/local/recipes/gpu/redox-drm/P5-virtio-auto-probe.patch index 6c968c0618..6cbcc697dd 100644 --- a/local/recipes/gpu/redox-drm/P5-virtio-auto-probe.patch +++ b/local/recipes/gpu/redox-drm/P5-virtio-auto-probe.patch @@ -1,5 +1,5 @@ diff --git a/local/recipes/gpu/redox-drm/source/src/main.rs b/local/recipes/gpu/redox-drm/source/src/main.rs -index 612a64e0f..f4abdc7bb 100644 +index 612a64e0f..7af80bd75 100644 --- a/local/recipes/gpu/redox-drm/source/src/main.rs +++ b/local/recipes/gpu/redox-drm/source/src/main.rs @@ -168,9 +168,9 @@ fn select_gpu_from_args() -> Result { @@ -14,3 +14,12 @@ index 612a64e0f..f4abdc7bb 100644 })?; let mut pci = PciDevice::open_location(&first.location) .map_err(|e| DriverError::Pci(format!("failed to open GPU {}: {e}", first.location)))?; +@@ -205,7 +205,7 @@ fn verify_supported_gpu(info: &PciDeviceInfo) -> Result<()> { + ))); + } + +- if info.vendor_id != PCI_VENDOR_ID_AMD && info.vendor_id != PCI_VENDOR_ID_INTEL { ++ if info.vendor_id != PCI_VENDOR_ID_AMD && info.vendor_id != PCI_VENDOR_ID_INTEL && info.vendor_id != 0x1AF4 { + return Err(DriverError::Pci(format!( + "device {} is vendor {:#06x}, expected AMD {:#06x} or Intel {:#06x}", + info.location, info.vendor_id, PCI_VENDOR_ID_AMD, PCI_VENDOR_ID_INTEL diff --git a/local/recipes/gpu/redox-drm/source/src/main.rs b/local/recipes/gpu/redox-drm/source/src/main.rs index 612a64e0f0..7af80bd758 100644 --- a/local/recipes/gpu/redox-drm/source/src/main.rs +++ b/local/recipes/gpu/redox-drm/source/src/main.rs @@ -168,9 +168,9 @@ fn select_gpu_from_args() -> Result { .map_err(|e| DriverError::Pci(format!("PCI scan failed: {e}")))?; let first = devices .into_iter() - .find(|d| d.vendor_id == PCI_VENDOR_ID_AMD || d.vendor_id == PCI_VENDOR_ID_INTEL) + .find(|d| d.vendor_id == PCI_VENDOR_ID_AMD || d.vendor_id == PCI_VENDOR_ID_INTEL || d.vendor_id == 0x1AF4) .ok_or_else(|| { - DriverError::NotFound("no AMD or Intel GPU found via scheme:pci".to_string()) + DriverError::NotFound("no AMD, Intel, or VirtIO GPU found via scheme:pci".to_string()) })?; let mut pci = PciDevice::open_location(&first.location) .map_err(|e| DriverError::Pci(format!("failed to open GPU {}: {e}", first.location)))?; @@ -205,7 +205,7 @@ fn verify_supported_gpu(info: &PciDeviceInfo) -> Result<()> { ))); } - if info.vendor_id != PCI_VENDOR_ID_AMD && info.vendor_id != PCI_VENDOR_ID_INTEL { + if info.vendor_id != PCI_VENDOR_ID_AMD && info.vendor_id != PCI_VENDOR_ID_INTEL && info.vendor_id != 0x1AF4 { return Err(DriverError::Pci(format!( "device {} is vendor {:#06x}, expected AMD {:#06x} or Intel {:#06x}", info.location, info.vendor_id, PCI_VENDOR_ID_AMD, PCI_VENDOR_ID_INTEL diff --git a/local/recipes/kde/kwin/recipe.toml b/local/recipes/kde/kwin/recipe.toml index 7a828213bf..e06d23fdd8 100644 --- a/local/recipes/kde/kwin/recipe.toml +++ b/local/recipes/kde/kwin/recipe.toml @@ -77,18 +77,18 @@ if cmake "${COOKBOOK_SOURCE}" \ -Wno-dev 2>&1; then cmake --build . -j${COOKBOOK_MAKE_JOBS} 2>&1 cmake --install . --prefix "${STAGE}" 2>&1 -fi -# Downstream cmake configs for KF6WindowSystem/KF6Config (needed by plasma-framework, plasma-workspace, plasma-desktop — not KWin itself) -mkdir -p "${STAGE}/lib/cmake/KF6WindowSystem" "${STAGE}/lib/cmake/KF6Config" -cat > "${STAGE}/lib/cmake/KF6WindowSystem/KF6WindowSystemConfig.cmake" << 'EOFCMAKE' + # Downstream cmake configs for KF6WindowSystem/KF6Config (needed by plasma-framework, plasma-workspace, plasma-desktop — not KWin itself) + mkdir -p "${STAGE}/lib/cmake/KF6WindowSystem" "${STAGE}/lib/cmake/KF6Config" + cat > "${STAGE}/lib/cmake/KF6WindowSystem/KF6WindowSystemConfig.cmake" << 'EOFCMAKE' find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) set(KF6WindowSystem_LIBRARIES Qt6::Gui) EOFCMAKE -cat > "${STAGE}/lib/cmake/KF6Config/KF6ConfigConfig.cmake" << 'EOFCMAKE' + cat > "${STAGE}/lib/cmake/KF6Config/KF6ConfigConfig.cmake" << 'EOFCMAKE' find_package(Qt6 REQUIRED COMPONENTS Core) set(KF6Config_LIBRARIES Qt6::Core) EOFCMAKE +fi """ [package]