From ca32adf6bafdd860679e88a615d29eb7ade939b7 Mon Sep 17 00:00:00 2001 From: Vasilito Date: Sat, 18 Apr 2026 17:58:27 +0100 Subject: [PATCH] Update build configs for KDE, Wayland, and Red Bear profiles Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- config/base.toml | 5 +- config/desktop-minimal.toml | 14 +-- config/desktop.toml | 8 +- config/redbear-desktop.toml | 21 ++-- config/redbear-device-services.toml | 1 + config/redbear-full.toml | 22 ++-- config/redbear-kde.toml | 31 +++-- config/redbear-legacy-desktop.toml | 2 +- config/redbear-live.toml | 9 +- config/redbear-wayland.toml | 5 +- config/wayland.toml | 170 +++++++++++++++++++++------- config/x11.toml | 7 +- 12 files changed, 193 insertions(+), 102 deletions(-) diff --git a/config/base.toml b/config/base.toml index 1f47fd5a..a953e480 100644 --- a/config/base.toml +++ b/config/base.toml @@ -90,7 +90,6 @@ schemes = [ "pty", "sudo", "audio", - "orbital", ] """ @@ -211,13 +210,13 @@ path = "/ui" data = "usr/share/ui" symlink = true -## legacy orbital font directory +## legacy display font directory [[files]] path = "/usr/share/ui/fonts" data = "/usr/share/fonts" symlink = true -## legacy orbital icon directory +## legacy display icon directory [[files]] path = "/usr/share/ui/icons" data = "/usr/share/icons" diff --git a/config/desktop-minimal.toml b/config/desktop-minimal.toml index 852dc837..7b662860 100644 --- a/config/desktop-minimal.toml +++ b/config/desktop-minimal.toml @@ -9,24 +9,24 @@ filesystem_size = 256 # Package settings [packages] -orbdata = {} -orbital = {} -orbterm = {} -orbutils = {} +orbdata = "ignore" +orbital = "ignore" +orbterm = "ignore" +orbutils = "ignore" [[files]] -path = "/usr/lib/init.d/20_orbital" +path = "/usr/lib/init.d/20_display" data = """ requires_weak 10_net notify audiod -nowait VT=3 orbital orblogin launcher +nowait VT=3 ion -c true """ # Override console config to not switch to VT 2 [[files]] path = "/usr/lib/init.d/30_console" data = """ -requires_weak 20_orbital +requires_weak 20_display nowait getty 2 nowait getty /scheme/debug/no-preserve -J """ diff --git a/config/desktop.toml b/config/desktop.toml index 70691f7a..59ae330f 100644 --- a/config/desktop.toml +++ b/config/desktop.toml @@ -9,10 +9,10 @@ filesystem_size = 650 # Package settings [packages] -cosmic-edit = {} -cosmic-files = {} -cosmic-icons = {} -cosmic-term = {} +cosmic-edit = "ignore" +cosmic-files = "ignore" +cosmic-icons = "ignore" +cosmic-term = "ignore" dejavu = {} ext4d = {} freefont = {} diff --git a/config/redbear-desktop.toml b/config/redbear-desktop.toml index e87a4eb9..6faa723f 100644 --- a/config/redbear-desktop.toml +++ b/config/redbear-desktop.toml @@ -1,8 +1,10 @@ # Red Bear OS Desktop Configuration -# Mainline Redox desktop + Red Bear branding + ext4 filesystem support +# Supplementary integration profile beneath the tracked KWin target # # Build: make all CONFIG_NAME=redbear-desktop # Live: make live CONFIG_NAME=redbear-desktop +# +# This profile remains available for non-KDE-specific integration work. include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.toml", "redbear-device-services.toml", "redbear-netctl.toml"] @@ -54,17 +56,16 @@ redbear-meta = {} # ── Desktop services (replace legacy desktop-minimal init scripts) ─────────── [[files]] -path = "/usr/lib/init.d/20_orbital.service" +path = "/usr/lib/init.d/20_display.service" data = """ [unit] -description = "Orbital display server" +description = "Display session service" requires_weak = [ - "10_net.target", ] [service] -cmd = "orbital" -args = ["orblogin", "launcher"] +cmd = "ion" +args = ["-c", "true"] envs = { VT = "3" } type = "oneshot_async" """ @@ -75,7 +76,7 @@ data = """ [unit] description = "Console terminals" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -88,9 +89,9 @@ type = "oneshot_async" path = "/usr/lib/init.d/29_activate_console.service" data = """ [unit] -description = "Activate Orbital VT" +description = "Activate display VT" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -105,7 +106,7 @@ data = """ [unit] description = "Debug console" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] diff --git a/config/redbear-device-services.toml b/config/redbear-device-services.toml index 642706fb..f4fed815 100644 --- a/config/redbear-device-services.toml +++ b/config/redbear-device-services.toml @@ -4,6 +4,7 @@ [packages] redbear-quirks = {} +pciids = {} fatd = {} [[files]] diff --git a/config/redbear-full.toml b/config/redbear-full.toml index db3f2b0a..9d7df064 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -3,7 +3,7 @@ # Build: make all CONFIG_NAME=redbear-full # Live: make live CONFIG_NAME=redbear-full # -# This is not the forward compositor/session target; it remains a broader integration slice. +# This remains a broader integration slice for desktop/session plumbing. # GPU driver stack ships through redbear-meta for this profile. # redox-drm now carries the runtime/package dependency on the AMD backend library. # KDE Frameworks + KWin: depend on qtdeclarative/qtwayland. Re-enable when ported. @@ -97,19 +97,18 @@ mode = 0o755 # ── Desktop services (not provided by base package) ──────────────── -# Orbital display server + login + launcher -# desktop-minimal.toml had "nowait VT=3 orbital orblogin launcher" +# Display-session placeholder for the supplementary integration slice [[files]] -path = "/usr/lib/init.d/20_orbital.service" +path = "/usr/lib/init.d/20_display.service" data = """ [unit] -description = "Orbital display server" +description = "Display session service" requires_weak = [ ] [service] -cmd = "orbital" -args = ["orblogin", "launcher"] +cmd = "ion" +args = ["-c", "true"] envs = { VT = "3" } type = "oneshot_async" """ @@ -122,7 +121,7 @@ data = """ [unit] description = "Console terminals" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -135,9 +134,9 @@ type = "oneshot_async" path = "/usr/lib/init.d/29_activate_console.service" data = """ [unit] -description = "Activate Orbital VT" +description = "Activate display VT" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -152,7 +151,7 @@ data = """ [unit] description = "Debug console" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -193,6 +192,7 @@ args = [ type = "oneshot_async" """ + [[files]] path = "/usr/lib/init.d/13_redbear-sessiond.service" data = """ diff --git a/config/redbear-kde.toml b/config/redbear-kde.toml index 27ea79bb..1f7b18d2 100644 --- a/config/redbear-kde.toml +++ b/config/redbear-kde.toml @@ -3,9 +3,9 @@ # Live: make live CONFIG_NAME=redbear-kde # # Intended desktop direction: KWin Wayland session on Red Bear OS +# Tracked default desktop target for Red Bear OS # Current state: KWin + KF6 + Qt6 + Mesa + D-Bus + seatd -# Not yet the shipped default: runtime compositor/session proof is still required -# X is compatibility-only and not a peer desktop architecture +# Runtime compositor/session proof is still required for broader support claims # Future: add plasma-workspace, plasma-desktop when their deps are resolved include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.toml", "redbear-device-services.toml", "redbear-netctl.toml"] @@ -24,6 +24,16 @@ shell = "/usr/bin/ion" # Red Bear OS branding redbear-release = {} +# Exclude inherited legacy desktop packages from the tracked KWin target +orbdata = "ignore" +orbital = "ignore" +orbterm = "ignore" +orbutils = "ignore" +cosmic-edit = "ignore" +cosmic-files = "ignore" +cosmic-icons = "ignore" +cosmic-term = "ignore" + # ext4 filesystem support ext4d = {} @@ -233,10 +243,10 @@ type = "oneshot_async" """ [[files]] -path = "/usr/lib/init.d/20_orbital.service" +path = "/usr/lib/init.d/20_display.service" data = """ [unit] -description = "Orbital display server (KDE session)" +description = "Display session service (KDE session)" requires_weak = [ "12_dbus.service", "13_redbear-sessiond.service", @@ -244,8 +254,7 @@ requires_weak = [ ] [service] -cmd = "orbital" -args = ["orblogin", "orbital-kde"] +cmd = "/usr/bin/redbear-kde-session" envs = { VT = "3" } type = "oneshot_async" """ @@ -256,7 +265,7 @@ data = """ [unit] description = "Console terminals" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -269,9 +278,9 @@ type = "oneshot_async" path = "/usr/lib/init.d/29_activate_console.service" data = """ [unit] -description = "Activate Orbital VT" +description = "Activate display VT" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -286,7 +295,7 @@ data = """ [unit] description = "Debug console" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -297,7 +306,7 @@ type = "oneshot_async" # KDE session launcher [[files]] -path = "/usr/bin/orbital-kde" +path = "/usr/bin/redbear-kde-session" mode = 0o755 data = """ #!/usr/bin/sh diff --git a/config/redbear-legacy-desktop.toml b/config/redbear-legacy-desktop.toml index 8a42ad68..37f2f193 100644 --- a/config/redbear-legacy-desktop.toml +++ b/config/redbear-legacy-desktop.toml @@ -1,7 +1,7 @@ # Red Bear OS overrides for broken legacy desktop init scripts. [[files]] -path = "/usr/lib/init.d/20_orbital" +path = "/usr/lib/init.d/20_display" data = "" [[files]] diff --git a/config/redbear-live.toml b/config/redbear-live.toml index 3cdff54f..10c1ac32 100644 --- a/config/redbear-live.toml +++ b/config/redbear-live.toml @@ -1,18 +1,15 @@ # Red Bear OS Live Configuration -# Live ISO variant — boots into Red Bear OS Desktop from USB/DVD +# Live ISO variant — follows the tracked KDE desktop target # # Build: make live CONFIG_NAME=redbear-live -include = ["redbear-desktop.toml"] +include = ["redbear-kde.toml"] [general] # Keep the live installer image reasonably sized filesystem_size = 3072 [packages] -# Keep the live installer image compact for now. -redbear-firmware = "ignore" - -# Keep these explicit for the live profile even though cub is inherited via redbear-desktop. +# Keep these explicit for the live profile even though cub is inherited via redbear-kde. cub = {} redbear-meta = {} diff --git a/config/redbear-wayland.toml b/config/redbear-wayland.toml index 5f58e900..cf0e49aa 100644 --- a/config/redbear-wayland.toml +++ b/config/redbear-wayland.toml @@ -5,9 +5,8 @@ # Phase 2 Wayland validation: ./local/scripts/test-phase4-wayland-qemu.sh # # Validation-only profile: -# - smallvil remains the bounded compositor/runtime harness -# - this profile is not the primary desktop path -# - the primary desktop path is redbear-kde -> kwin_wayland +# - the packaged compositor/runtime harness remains bounded +# - this profile remains the bounded validation slice beneath redbear-kde -> kwin_wayland include = ["wayland.toml"] diff --git a/config/wayland.toml b/config/wayland.toml index 33429b5c..6eda3661 100644 --- a/config/wayland.toml +++ b/config/wayland.toml @@ -1,4 +1,6 @@ -# Wayland configuration +# Wayland validation-only configuration + +# This is the bounded compositor validation slice. include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.toml", "redbear-device-services.toml", "redbear-netctl.toml"] @@ -15,27 +17,93 @@ redbear-release = {} redbear-hwutils = {} redbear-info = {} redbear-netctl = {} +dbus = {} +redbear-sessiond = {} +redbear-dbus-services = {} firmware-loader = {} evdevd = {} udev-shim = {} +seatd = {} mesa = {} "pop-icon-theme.cursors" = {} -smallvil = {} +kwin = {} xkeyboard-config = {} -# Replace the legacy desktop-minimal init script with an explicit service unit. [[files]] -path = "/usr/lib/init.d/20_orbital.service" +path = "/usr/lib/init.d/12_dbus.service" data = """ [unit] -description = "Orbital display server (Wayland session)" +description = "D-Bus system bus" requires_weak = [ - "10_net.target", + "00_base.target", ] [service] -cmd = "orbital" -args = ["orbital-wayland"] +cmd = "ion" +args = [ + "-c", + "mkdir -p /var/lib/dbus /run/dbus; rm -f /run/dbus/pid; dbus-uuidgen --ensure; dbus-daemon --system", +] +type = "oneshot_async" +""" + +[[files]] +path = "/var/lib/dbus" +data = "" +directory = true +mode = 0o755 + +[[files]] +path = "/run/dbus" +data = "" +directory = true +mode = 0o755 + +[[files]] +path = "/usr/lib/init.d/13_seatd.service" +data = """ +[unit] +description = "seatd seat management daemon" +requires_weak = [ + "12_dbus.service", + "13_redbear-sessiond.service", +] + +[service] +cmd = "seatd" +args = ["-l", "info"] +type = "oneshot_async" +""" + +[[files]] +path = "/usr/lib/init.d/13_redbear-sessiond.service" +data = """ +[unit] +description = "Red Bear session broker (org.freedesktop.login1)" +requires_weak = [ + "12_dbus.service", +] + +[service] +cmd = "ion" +args = [ + "-c", + "redbear-sessiond", +] +type = "oneshot_async" +""" + +# Replace the legacy desktop-minimal init script with an explicit service unit. +[[files]] +path = "/usr/lib/init.d/20_display.service" +data = """ +[unit] +description = "Display session service (Wayland validation)" +requires_weak = [ +] + +[service] +cmd = "/usr/bin/redbear-validation-session" envs = { BROWSER = "/bin/netsurf-fb", VT = "3" } type = "oneshot_async" """ @@ -46,7 +114,7 @@ data = """ [unit] description = "Console terminals" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -59,9 +127,9 @@ type = "oneshot_async" path = "/usr/lib/init.d/29_activate_console.service" data = """ [unit] -description = "Activate Orbital VT" +description = "Activate display VT" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -76,7 +144,7 @@ data = """ [unit] description = "Debug console" requires_weak = [ - "20_orbital.service", + "20_display.service", ] [service] @@ -86,15 +154,16 @@ type = "oneshot_async" """ [[files]] -path = "/usr/bin/orbital-wayland" +path = "/usr/bin/redbear-validation-session" mode = 0o755 -data = """ -#!/usr/bin/env ion + data = """ +#!/usr/bin/env sh -# Prepare environment export DISPLAY="" -export COSMIC_BACKEND=winit -export HOME=/root +export WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" +export XDG_SESSION_TYPE=wayland +export LIBSEAT_BACKEND=seatd +export SEATD_SOCK=/run/seatd.sock export QT_PLUGIN_PATH=/usr/plugins export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins/platforms export QML2_IMPORT_PATH=/usr/qml @@ -102,21 +171,34 @@ export RUST_BACKTRACE=full export RUST_LOG=debug export XCURSOR_THEME=Pop export XKB_CONFIG_ROOT=/usr/share/X11/xkb -export XDG_RUNTIME_DIR=/tmp/run/user/0 -# Create XDG runtime directory -#TODO: mkdir -p not working -mkdir -p /tmp/run -mkdir -p /tmp/run/user -mkdir -p /tmp/run/user/0 +if [ -z "${XDG_RUNTIME_DIR:-}" ]; then + export XDG_RUNTIME_DIR="/tmp/run/user/$(id -u)" +fi -# Compile glib schemas when available -if test -d /usr/share/glib-2.0/schemas +mkdir -p "$XDG_RUNTIME_DIR" + +if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then + eval "$(dbus-launch --sh-syntax)" +fi + +dbus-update-activation-environment \ + DBUS_SESSION_BUS_ADDRESS \ + DBUS_SESSION_BUS_PID \ + WAYLAND_DISPLAY \ + XDG_SESSION_TYPE \ + XDG_RUNTIME_DIR \ + DISPLAY \ + HOME \ + USER + +if [ -d /usr/share/glib-2.0/schemas ]; then glib-compile-schemas /usr/share/glib-2.0/schemas/ -end +fi -# Default to the smaller Smithay path first. -smallvil -c /usr/bin/wayland-session +kwin_wayland --replace & +sleep 2 +exec /usr/bin/wayland-session """ [[files]] @@ -127,26 +209,26 @@ data = """ # env G_MAIN_POLL_DEBUG=1 G_MESSAGES_DEBUG=all LD_DEBUG=all WEBKIT_DEBUG=all MiniBrowser& printenv -let session_started = "/home/root/.wayland-session.started" +let session_started = "$HOME/.wayland-session.started" rm -f $session_started echo "started" > $session_started export QT_PLUGIN_PATH=/usr/plugins export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins/platforms export QML2_IMPORT_PATH=/usr/qml -let smoke_ok = "/home/root/.qt6-wayland-smoke.ok" -let smoke_err = "/home/root/.qt6-wayland-smoke.err" -let smoke_log = "/home/root/.qt6-wayland-smoke.log" -let bootstrap_ok = "/home/root/.qt6-bootstrap-minimal.ok" -let bootstrap_log = "/home/root/.qt6-bootstrap-minimal.log" -let plugin_ok = "/home/root/.qt6-plugin-minimal.ok" -let plugin_err = "/home/root/.qt6-plugin-minimal.err" -let plugin_log = "/home/root/.qt6-plugin-minimal.log" -let smoke_minimal_ok = "/home/root/.qt6-wayland-smoke-minimal.ok" -let smoke_offscreen_ok = "/home/root/.qt6-wayland-smoke-offscreen.ok" -let smoke_wayland_ok = "/home/root/.qt6-wayland-smoke-wayland.ok" -let smoke_minimal_log = "/home/root/.qt6-wayland-smoke-minimal.log" -let smoke_offscreen_log = "/home/root/.qt6-wayland-smoke-offscreen.log" -let smoke_wayland_log = "/home/root/.qt6-wayland-smoke-wayland.log" +let smoke_ok = "$HOME/.qt6-wayland-smoke.ok" +let smoke_err = "$HOME/.qt6-wayland-smoke.err" +let smoke_log = "$HOME/.qt6-wayland-smoke.log" +let bootstrap_ok = "$HOME/.qt6-bootstrap-minimal.ok" +let bootstrap_log = "$HOME/.qt6-bootstrap-minimal.log" +let plugin_ok = "$HOME/.qt6-plugin-minimal.ok" +let plugin_err = "$HOME/.qt6-plugin-minimal.err" +let plugin_log = "$HOME/.qt6-plugin-minimal.log" +let smoke_minimal_ok = "$HOME/.qt6-wayland-smoke-minimal.ok" +let smoke_offscreen_ok = "$HOME/.qt6-wayland-smoke-offscreen.ok" +let smoke_wayland_ok = "$HOME/.qt6-wayland-smoke-wayland.ok" +let smoke_minimal_log = "$HOME/.qt6-wayland-smoke-minimal.log" +let smoke_offscreen_log = "$HOME/.qt6-wayland-smoke-offscreen.log" +let smoke_wayland_log = "$HOME/.qt6-wayland-smoke-wayland.log" rm -f $smoke_ok $smoke_err rm -f $smoke_log rm -f $bootstrap_ok $bootstrap_log diff --git a/config/x11.toml b/config/x11.toml index b74918c1..38fd1e6d 100644 --- a/config/x11.toml +++ b/config/x11.toml @@ -1,4 +1,8 @@ -# X11 configuration +# X11 compatibility-only configuration + +# This profile is not a primary desktop path. +# Red Bear OS treats KWin Wayland as the production compositor/session path. +# X exists only for compatibility and legacy app/runtime surfaces. include = ["desktop.toml"] @@ -158,4 +162,3 @@ gid = 100 name = "messagebus" home = "/nonexistent" shell = "/usr/bin/false" -