Skip to content

v0.22.0: Phase 9 Complete -- KDE Plasma 6 Desktop Environment Porting Infrastructure

Choose a tag to compare

@doublegate doublegate released this 08 Mar 05:13
· 687 commits to main since this release

VeridianOS v0.22.0 -- Phase 9 Complete: KDE Plasma 6 Desktop Environment Porting Infrastructure

Release Date: March 8, 2026
Previous Version: v0.21.0 (Performance Benchmarking + Verification Infrastructure)
Phase: 9 of 9 -- COMPLETE


Overview

v0.22.0 completes Phase 9: KDE Plasma 6 Desktop Environment, the final development phase of VeridianOS. This release delivers the complete 8-layer porting infrastructure for running KDE Plasma 6 as a Wayland desktop session on VeridianOS, spanning 11 sprints, 314 tasks, and approximately 130 new files totaling ~45,000 lines of C/C++ and shell code across 6 userland/ directories.

The existing built-in desktop environment (9 apps, in-kernel Wayland compositor) is preserved as a lightweight fallback session type selectable at login.


What's New

Complete KDE Plasma 6 Porting Stack

The porting infrastructure covers every layer required to build and run KDE Plasma 6 on VeridianOS:

Layer Sprint Components LOC
0 9.0 Dynamic linking (ld-veridian), libc extensions, C++ runtime (libstdc++) ~3,500
1 9.1 DRM/KMS user-space, evdev, libdrm, libinput ~3,200
2 9.2 zlib, libffi, pcre2, ICU, OpenSSL, libxml2 ~2,800
3 9.3 EGL 1.5, OpenGL ES 2.0 (~150 entry points), libepoxy, Mesa cross-file ~4,800
4 9.4 FreeType 2.13.3, HarfBuzz 9.0.0, Fontconfig 2.15.0, libxkbcommon 1.7.0 ~9,300
5 9.5 libdbus-1, systemd-logind shim, Polkit ~5,400
6 9.6 Qt 6 QPA plugin (19 files), mkspec, platform module, CMake toolchain ~3,100
7 9.7 KDE Frameworks 6: ECM, Solid, KIO, KWindowSystem, KWallet + build scripts ~5,100
8 9.8 KWin: DRM platform (1,228 LOC), libinput (790), KDE protocols (1,153), effects (483) ~5,800
9 9.9 Plasma: Breeze style (1,580), decoration (1,054), lock screen (1,106), KScreen, PowerDevil ~6,900
10 9.10 Integration: boot, display manager, XWayland, perf profiler, rootfs, CI ~4,600

Key Components

Graphics Stack (Sprint 9.3)

  • EGL 1.5 display lifecycle with DRM/GBM backend
  • OpenGL ES 2.0 with ~150 entry point stubs and state tracking
  • libepoxy GL/EGL function dispatch
  • Meson cross-file for Mesa llvmpipe + virgl builds

Qt 6 Platform Abstraction (Sprint 9.6)

  • QPA plugin "qveridian" with Wayland + EGL + xkbcommon integration
  • Platform-specific syscall shims: eventfd, timerfd, inotify, memfd_create
  • CMake cross-compilation toolchain for Qt 6.8

KWin Compositor (Sprint 9.8)

  • DRM/KMS platform backend: CRTC/connector enumeration, GBM surfaces, EGL on GBM, page flip VSync
  • libinput input backend: keyboard/pointer/touch event translation, xkbcommon keymap sharing
  • 7 KDE Wayland protocol implementations: plasma_shell, window_management, server_decoration, blur, DPMS, outputdevice, outputmanagement
  • GPU-aware effects configuration: llvmpipe/virgl/real GPU detection with per-tier effect lists

Plasma Desktop (Sprint 9.9)

  • Breeze Qt widget style: 15+ widget types with animation engine
  • Breeze window decoration: 8 button types, hover animations, configurable borders, shadow generation
  • Lock screen: SHA-256 auth against UserDatabase, ext-session-lock-v1 protocol
  • KScreen display backend: DRM output enumeration, EDID parsing, multi-monitor layout
  • PowerDevil: battery sysfs, DPMS control, CPU frequency governors
  • 5 .desktop files for Dolphin, Konsole, Kate, Spectacle, System Settings

Integration (Sprint 9.10)

  • Display manager with session type selection (built-in DE vs KDE Plasma)
  • XWayland: on-demand launch, clipboard sharing, input forwarding
  • Performance profiler: memory RSS, FPS, input latency, D-Bus RTT validation
  • 2GB KDE rootfs builder with font cache generation
  • QEMU launch script with VirtIO GPU 3D acceleration
  • GitHub Actions CI workflow with sysroot caching and screenshot comparison

Directory Structure

userland/libc/       C library shims (EGL, GLES2, FreeType, HarfBuzz, Fontconfig,
                     xkbcommon, D-Bus, logind, Polkit, xattr + 60+ headers)
userland/qt6/        Qt 6 QPA plugin, mkspec, toolchain, platform module
userland/kf6/        KDE Frameworks 6: ECM, Solid, KIO, KWindowSystem, KWallet
userland/kwin/       KWin compositor: DRM platform, input, protocols, effects
userland/plasma/     Plasma Desktop: Breeze theme, lock screen, KScreen, PowerDevil
userland/integration/ Boot integration, display manager, XWayland, CI, testing

Build & Test

# Standard build (unchanged -- KDE porting files are userland, not kernel)
./build-kernel.sh all dev

# Clippy (0 warnings on all 3 architectures)
cargo clippy --target targets/x86_64-veridian.json -p veridian-kernel \
  -Zbuild-std=core,compiler_builtins,alloc -Zbuild-std-features=compiler-builtins-mem \
  -- -D warnings

# Host-target tests (4,095 passing, no regressions)
cargo test

Statistics

Metric Value
Version v0.22.0
Phase 9 sprints 11/11 complete
Phase 9 tasks 314/314 complete
New files (Phase 9) ~130
New LOC (Phase 9) ~45,000
All phases complete 0-9
Kernel tests 4,095 passing
CI pipeline 11/11 green
Clippy warnings 0 (all 3 architectures)
Releases published 77

Known Limitations

See userland/integration/KNOWN-LIMITATIONS.md for details:

  • Software rendering (llvmpipe) limited to ~15 FPS; VirtIO virgl achieves 60 FPS
  • XWayland: No GLX (EGL only), clipboard limited to text, no DRI3
  • No NetworkManager, BlueZ, PipeWire, or PulseAudio integration yet
  • KDE Activities, Baloo file indexing, and KRunner not yet functional
  • Minimum system requirements: 2GB RAM, VirtIO GPU recommended

What's Next

With all 10 development phases (0-9) complete, VeridianOS is ready for:

  • v1.0.0 final release preparation
  • Real hardware testing on x86_64 systems
  • Community contributions and external testing
  • Upstream KDE cross-compilation using the porting infrastructure

Full Changelog: v0.21.0...v0.22.0