D-Bus Phase 3/4: upgrade sessiond, services, add StatusNotifierWatcher, consolidate configs
- redbear-sessiond: add Manager.Inhibit (pipe FD), CanPowerOff/CanReboot/ CanSuspend/CanHibernate/CanHybridSleep/CanSleep (return na), PowerOff/ Reboot/Suspend stubs, GetSessionByPID, ListUsers, ListSeats, ListInhibitors, ActivateSession/LockSession/UnlockSession/TerminateSession - redbear-sessiond: add Session SetIdleHint, SetLockedHint, SetType, Terminate methods; wire PauseDevice/ResumeDevice/Lock/Unlock signal emission via SignalEmitter injection; add dynamic device enumeration scanning /scheme/drm/card* and /dev/input/event* at startup - redbear-sessiond: replace infinite pending() with stoppable shutdown via tokio watch channel + control socket shutdown command - redbear-upower: add Changed signal emission with 30s periodic polling and power state snapshot comparison - redbear-notifications: add ActionInvoked signal, expand capabilities to body + body-markup + actions - redbear-polkit, redbear-udisks: replace pending() with stoppable shutdown via signal handling + watch channel - Add redbear-statusnotifierwatcher: new session bus service implementing org.freedesktop.StatusNotifierWatcher for KDE system tray - Add D-Bus activation file for StatusNotifierWatcher - KWin session.cpp: try LogindSession before NoopSession fallback - Consolidate config profiles: remove obsolete redbear-desktop, redbear-kde, redbear-live-*, redbear-minimal-*, redbear-wayland configs; simplify to three supported targets (redbear-full, redbear-mini, redbear-grub) - Update DBUS-INTEGRATION-PLAN.md and DESKTOP-STACK-CURRENT-STATUS.md with Phase 3/4 fragility assessment, KWin readiness matrix, and completeness gap analysis
This commit is contained in:
@@ -1,246 +0,0 @@
|
||||
# Red Bear OS Desktop Configuration
|
||||
# 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"]
|
||||
|
||||
[general]
|
||||
filesystem_size = 10240
|
||||
|
||||
[packages]
|
||||
# Red Bear OS branding (os-release, hostname, motd)
|
||||
redbear-release = {}
|
||||
|
||||
# Native Redox PCI/USB listing tools (lspci, lsusb)
|
||||
redbear-hwutils = {}
|
||||
|
||||
# Redox-native netctl compatibility command
|
||||
redbear-netctl = {}
|
||||
redbear-netctl-console = {}
|
||||
|
||||
# Native network reporting and connect-scan tools
|
||||
redbear-netstat = {}
|
||||
redbear-traceroute = {}
|
||||
redbear-mtr = {}
|
||||
redbear-nmap = {}
|
||||
|
||||
# Firmware loading + Wi-Fi control plane
|
||||
redbear-firmware = {}
|
||||
firmware-loader = {}
|
||||
redbear-wifictl = {}
|
||||
|
||||
# Input/runtime service prerequisites
|
||||
evdevd = {}
|
||||
udev-shim = {}
|
||||
|
||||
# Diagnostic tool
|
||||
redbear-info = {}
|
||||
|
||||
# Process monitor
|
||||
htop = {}
|
||||
|
||||
# IOMMU validation surface
|
||||
iommu = {}
|
||||
|
||||
# D-Bus IPC and session services
|
||||
dbus = {}
|
||||
redbear-sessiond = {}
|
||||
redbear-dbus-services = {}
|
||||
redbear-notifications = {}
|
||||
redbear-upower = {}
|
||||
redbear-udisks = {}
|
||||
redbear-polkit = {}
|
||||
|
||||
# Terminal file manager (Midnight Commander port)
|
||||
mc = {}
|
||||
|
||||
# Package builder (cub -S/-B/-G CLI)
|
||||
cub = {}
|
||||
|
||||
# Core Red Bear umbrella package
|
||||
redbear-meta = {}
|
||||
|
||||
|
||||
# ── Desktop services (replace legacy desktop-minimal init scripts) ───────────
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/20_display.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Display session service"
|
||||
requires_weak = [
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = ["-c", "true"]
|
||||
envs = { VT = "3" }
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/30_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Console terminals"
|
||||
requires_weak = [
|
||||
"29_activate_console.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["2"]
|
||||
type = "oneshot_async"
|
||||
respawn = true
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/29_activate_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Activate display VT"
|
||||
requires_weak = [
|
||||
"20_display.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "inputd"
|
||||
args = ["-A", "3"]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/31_debug_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Debug console"
|
||||
requires_weak = [
|
||||
"29_activate_console.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["/scheme/debug/no-preserve", "-J"]
|
||||
type = "oneshot_async"
|
||||
respawn = true
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/13_iommu.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "IOMMU DMA remapping daemon"
|
||||
requires_weak = [
|
||||
"00_pcid-spawner.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "/usr/bin/iommu"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/12_dbus.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "D-Bus system bus"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
]
|
||||
|
||||
[service]
|
||||
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 = "/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"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-upower.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "UPower D-Bus service (org.freedesktop.UPower)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-upower",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-udisks.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "UDisks2 D-Bus service (org.freedesktop.UDisks2)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-udisks",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-polkit.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "PolicyKit1 D-Bus service (org.freedesktop.PolicyKit1)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-polkit",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/var/lib/dbus"
|
||||
data = ""
|
||||
directory = true
|
||||
mode = 0o755
|
||||
|
||||
[[files]]
|
||||
path = "/run/dbus"
|
||||
data = ""
|
||||
directory = true
|
||||
mode = 0o755
|
||||
@@ -1,10 +0,0 @@
|
||||
# Red Bear OS Full Configuration with GRUB Boot Manager
|
||||
# Desktop + RBOS branding + GRUB chainload
|
||||
#
|
||||
# Build: make all CONFIG_NAME=redbear-full-grub
|
||||
#
|
||||
# This config adds GRUB as boot manager (Phase 2 installer-native).
|
||||
# GRUB presents a menu and chainloads the Redox bootloader.
|
||||
# Requires: efi_partition_size >= 8 (16 recommended for GRUB + Redox bootloader + margin)
|
||||
|
||||
include = ["redbear-full.toml", "redbear-grub.toml"]
|
||||
+157
-357
@@ -1,15 +1,13 @@
|
||||
# Red Bear OS Full Configuration
|
||||
# Primary desktop/session target: Wayland + KWin/KDE session surface on Red Bear OS.
|
||||
# Build: make all CONFIG_NAME=redbear-full
|
||||
# Live: make live CONFIG_NAME=redbear-live-full # bare-metal live ISO only
|
||||
# Desktop/graphics ISO for bare metal and QEMU.
|
||||
#
|
||||
# This is the only active full desktop target. Wayland and KDE package/runtime surfaces are folded
|
||||
# here instead of being split across redbear-wayland and redbear-kde.
|
||||
# GPU driver stack ships through redbear-meta for this profile.
|
||||
# redox-drm now carries the runtime/package dependency on the AMD backend library.
|
||||
# Runtime/session claims still remain evidence-qualified until compositor/session proof is strong.
|
||||
# Build: make live CONFIG_NAME=redbear-full
|
||||
# QEMU: make all CONFIG_NAME=redbear-full && make qemu
|
||||
#
|
||||
# Extends redbear-mini with the full desktop/graphics stack:
|
||||
# Wayland, Qt6, KF6, KWin, Mesa, DRM drivers, firmware, greeter.
|
||||
|
||||
include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.toml", "redbear-device-services.toml", "redbear-netctl.toml", "redbear-greeter-services.toml"]
|
||||
include = ["redbear-mini.toml"]
|
||||
|
||||
[general]
|
||||
filesystem_size = 4096
|
||||
@@ -23,73 +21,20 @@ home = "/nonexistent"
|
||||
shell = "/usr/bin/ion"
|
||||
|
||||
[packages]
|
||||
# Red Bear OS branding (os-release, hostname, motd)
|
||||
redbear-release = {}
|
||||
|
||||
# Exclude inherited legacy desktop packages from the tracked KWin/Wayland target
|
||||
orbdata = "ignore"
|
||||
orbital = "ignore"
|
||||
orbterm = "ignore"
|
||||
orbutils = "ignore"
|
||||
cosmic-edit = "ignore"
|
||||
cosmic-files = "ignore"
|
||||
cosmic-icons = "ignore"
|
||||
cosmic-term = "ignore"
|
||||
|
||||
# Native Redox PCI/USB listing tools (lspci, lsusb)
|
||||
redbear-hwutils = {}
|
||||
|
||||
# Redox-native netctl compatibility command
|
||||
redbear-netctl = {}
|
||||
redbear-netctl-console = {}
|
||||
|
||||
# Native network reporting and connect-scan tools
|
||||
redbear-netstat = {}
|
||||
redbear-traceroute = {}
|
||||
redbear-mtr = {}
|
||||
redbear-nmap = {}
|
||||
|
||||
# Package builder / recipe utility
|
||||
cub = {}
|
||||
|
||||
# Terminal file manager (Midnight Commander port)
|
||||
mc = {}
|
||||
|
||||
# ext4 filesystem support (our custom port)
|
||||
ext4d = {}
|
||||
|
||||
# Firmware loading + Wi-Fi control plane
|
||||
# Firmware loading
|
||||
redbear-firmware = {}
|
||||
firmware-loader = {}
|
||||
redbear-wifictl = {}
|
||||
|
||||
# Input layer
|
||||
evdevd = {}
|
||||
udev-shim = {}
|
||||
|
||||
# Desktop/session plumbing
|
||||
dbus = {}
|
||||
redbear-sessiond = {}
|
||||
redbear-dbus-services = {}
|
||||
redbear-notifications = {}
|
||||
redbear-upower = {}
|
||||
redbear-udisks = {}
|
||||
redbear-polkit = {}
|
||||
|
||||
# IOMMU DMA remapping daemon
|
||||
iommu = {}
|
||||
|
||||
# Diagnostic tool
|
||||
redbear-info = {}
|
||||
|
||||
# Process monitor
|
||||
htop = {}
|
||||
# GPU/graphics stack
|
||||
redox-drm = {}
|
||||
mesa = {}
|
||||
libdrm = {}
|
||||
|
||||
# Wayland protocol
|
||||
libwayland = {}
|
||||
wayland-protocols = {}
|
||||
|
||||
# Keyboard support
|
||||
# Keyboard/input
|
||||
libxkbcommon = {}
|
||||
xkeyboard-config = {}
|
||||
libevdev = {}
|
||||
@@ -105,15 +50,13 @@ qtsvg = {}
|
||||
qtwayland = {}
|
||||
qt6-wayland-smoke = {}
|
||||
|
||||
# KF6 Frameworks — Tier 1
|
||||
# KF6 Frameworks
|
||||
kf6-extra-cmake-modules = {}
|
||||
kf6-kcoreaddons = {}
|
||||
kf6-kconfig = {}
|
||||
kf6-ki18n = {}
|
||||
kf6-kcolorscheme = {}
|
||||
kf6-kauth = {}
|
||||
|
||||
# KF6 Frameworks — KWin session-surface chain
|
||||
kf6-kwindowsystem = {}
|
||||
kf6-knotifications = {}
|
||||
kf6-kconfigwidgets = {}
|
||||
@@ -133,24 +76,50 @@ kdecoration = {}
|
||||
# KWin Wayland compositor
|
||||
kwin = {}
|
||||
|
||||
# Graphics
|
||||
redox-drm = {}
|
||||
mesa = {}
|
||||
libdrm = {}
|
||||
# Greeter/login stack
|
||||
redbear-authd = {}
|
||||
redbear-session-launch = {}
|
||||
redbear-greeter = {}
|
||||
|
||||
# Core Red Bear umbrella package
|
||||
redbear-meta = {}
|
||||
|
||||
# Firmware directory for AMD/Intel GPU blobs
|
||||
# Desktop fonts and icons
|
||||
dejavu = {}
|
||||
freefont = {}
|
||||
hicolor-icon-theme = {}
|
||||
pop-icon-theme = {}
|
||||
|
||||
# Suppress legacy desktop packages
|
||||
orbdata = "ignore"
|
||||
orbital = "ignore"
|
||||
orbterm = "ignore"
|
||||
orbutils = "ignore"
|
||||
cosmic-edit = "ignore"
|
||||
cosmic-files = "ignore"
|
||||
cosmic-icons = "ignore"
|
||||
cosmic-term = "ignore"
|
||||
|
||||
[[files]]
|
||||
path = "/lib/firmware/amdgpu"
|
||||
data = ""
|
||||
directory = true
|
||||
mode = 0o755
|
||||
|
||||
# Greeter/login service wiring now lives in config/redbear-greeter-services.toml, which is
|
||||
# included above so the full desktop target has a single source of truth for display/fallback
|
||||
# session services.
|
||||
[[files]]
|
||||
path = "/usr/lib/fonts"
|
||||
data = "/usr/share/fonts"
|
||||
symlink = true
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/05_boot-essential.target"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Boot essential services target"
|
||||
requires_weak = [
|
||||
"00_base.target",
|
||||
]
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/13_iommu.service"
|
||||
@@ -185,7 +154,6 @@ args = [
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/13_redbear-sessiond.service"
|
||||
data = """
|
||||
@@ -275,293 +243,125 @@ 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/fonts"
|
||||
data = "/usr/share/fonts"
|
||||
symlink = true
|
||||
|
||||
[[files]]
|
||||
path = "/usr/bin/redbear-validation-session"
|
||||
mode = 0o755
|
||||
path = "/usr/lib/init.d/19_redbear-authd.service"
|
||||
data = """
|
||||
#!/usr/bin/env sh
|
||||
[unit]
|
||||
description = "Red Bear authentication daemon"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
export DISPLAY=""
|
||||
export HOME="${HOME:-/home/root}"
|
||||
export USER="${USER:-root}"
|
||||
export LOGNAME="${LOGNAME:-$USER}"
|
||||
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
|
||||
export RUST_BACKTRACE=full
|
||||
export RUST_LOG=debug
|
||||
export XCURSOR_THEME=Pop
|
||||
export XKB_CONFIG_ROOT=/usr/share/X11/xkb
|
||||
|
||||
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
|
||||
export XDG_RUNTIME_DIR="/tmp/run/user/$(id -u)"
|
||||
fi
|
||||
|
||||
mkdir -p "$XDG_RUNTIME_DIR"
|
||||
chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null || true
|
||||
|
||||
wait_for_path() {
|
||||
target="$1"
|
||||
attempts=0
|
||||
while [ "$attempts" -lt 30 ]; do
|
||||
if [ -e "$target" ]; then
|
||||
return 0
|
||||
fi
|
||||
attempts=$((attempts + 1))
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
if ! wait_for_path /run/dbus/system_bus_socket; then
|
||||
echo "system D-Bus socket did not appear" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
|
||||
wait_for_wayland_socket() {
|
||||
socket_path="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY"
|
||||
attempts=0
|
||||
while [ "$attempts" -lt 30 ]; do
|
||||
if [ -e "$socket_path" ]; then
|
||||
return 0
|
||||
fi
|
||||
if ! kill -0 "$kwin_pid" 2>/scheme/null; then
|
||||
return 1
|
||||
fi
|
||||
attempts=$((attempts + 1))
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then
|
||||
eval "$(dbus-launch --sh-syntax)"
|
||||
fi
|
||||
|
||||
validation_request="/run/redbear-kde-session.validation-request"
|
||||
validation_success="/run/redbear-kde-session.validation-success"
|
||||
|
||||
if [ -f "$validation_request" ]; then
|
||||
{
|
||||
echo "user=$USER"
|
||||
echo "runtime=$XDG_RUNTIME_DIR"
|
||||
echo "wayland=$WAYLAND_DISPLAY"
|
||||
} > "$validation_success"
|
||||
rm -f "$validation_request"
|
||||
exit 0
|
||||
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/
|
||||
fi
|
||||
|
||||
if [ -n "$KWIN_DRM_DEVICES" ]; then
|
||||
kwin_wayland_wrapper --drm &
|
||||
else
|
||||
echo "redbear-validation-session: using virtual KWin backend (set KWIN_DRM_DEVICES to enable DRM)" >&2
|
||||
kwin_wayland_wrapper --virtual &
|
||||
fi
|
||||
kwin_pid=$!
|
||||
|
||||
if ! wait_for_wayland_socket; then
|
||||
echo "kwin_wayland failed to expose $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
/usr/bin/wayland-session
|
||||
smoke_exit=$?
|
||||
|
||||
echo "wayland-session exited with code $smoke_exit"
|
||||
|
||||
# 60-second KWin survival verdict
|
||||
survival_ok="$HOME/.kwin-60s-survival.ok"
|
||||
survival_err="$HOME/.kwin-60s-survival.err"
|
||||
rm -f "$survival_ok" "$survival_err"
|
||||
|
||||
elapsed=0
|
||||
while kill -0 "$kwin_pid" 2>/dev/null; do
|
||||
if [ "$elapsed" -ge 60 ]; then
|
||||
echo "KWin survived 60 seconds (pid=$kwin_pid)" > "$survival_ok"
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
elapsed=$((elapsed + 1))
|
||||
done
|
||||
|
||||
if [ ! -f "$survival_ok" ]; then
|
||||
echo "KWin died before 60 seconds (pid=$kwin_pid, elapsed=${elapsed}s)" > "$survival_err"
|
||||
fi
|
||||
|
||||
echo "redbear-validation-session: complete (smoke_exit=$smoke_exit, survival=$([ -f "$survival_ok" ] && echo ok || echo failed))"
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-authd",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/bin/wayland-session"
|
||||
mode = 0o755
|
||||
path = "/usr/lib/init.d/20_greeter.service"
|
||||
data = """
|
||||
#!/usr/bin/env ion
|
||||
[unit]
|
||||
description = "Red Bear greeter service"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
"13_redbear-sessiond.service",
|
||||
"13_seatd.service",
|
||||
"19_redbear-authd.service",
|
||||
]
|
||||
|
||||
printenv
|
||||
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/.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
|
||||
rm -f $plugin_ok $plugin_err $plugin_log
|
||||
rm -f $smoke_minimal_ok $smoke_offscreen_ok $smoke_wayland_ok
|
||||
rm -f $smoke_minimal_log $smoke_offscreen_log $smoke_wayland_log
|
||||
if which qt6-wayland-smoke >/scheme/null
|
||||
if env LD_DEBUG=all QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=minimal qt6-bootstrap-check > $bootstrap_log ^> $bootstrap_log
|
||||
touch $bootstrap_ok
|
||||
else
|
||||
if test -f $bootstrap_log
|
||||
cat $bootstrap_log
|
||||
end
|
||||
echo "qt6-bootstrap-check minimal failed; see $bootstrap_log" > $smoke_err
|
||||
end
|
||||
|
||||
if env LD_DEBUG=all QT_DEBUG_PLUGINS=1 QT_PLUGIN_PATH=/usr/plugins QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins/platforms qt6-plugin-check /usr/plugins/platforms/libqminimal.so > $plugin_log ^> $plugin_log
|
||||
touch $plugin_ok
|
||||
else
|
||||
if test -f $plugin_log
|
||||
cat $plugin_log
|
||||
end
|
||||
echo "qt6-plugin-check failed; see $plugin_log" > $plugin_err
|
||||
echo "qt6-plugin-check failed; see $plugin_log" > $smoke_err
|
||||
end
|
||||
|
||||
if env QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=minimal qt6-wayland-smoke > $smoke_minimal_log ^> $smoke_minimal_log
|
||||
touch $smoke_minimal_ok
|
||||
else
|
||||
echo "qt6-wayland-smoke minimal failed; see $smoke_minimal_log" > $smoke_err
|
||||
end
|
||||
|
||||
if env QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=offscreen qt6-wayland-smoke > $smoke_offscreen_log ^> $smoke_offscreen_log
|
||||
touch $smoke_offscreen_ok
|
||||
else
|
||||
echo "qt6-wayland-smoke offscreen failed; see $smoke_offscreen_log" > $smoke_err
|
||||
end
|
||||
|
||||
if env QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=wayland qt6-wayland-smoke > $smoke_wayland_log ^> $smoke_wayland_log
|
||||
touch $smoke_wayland_ok
|
||||
touch $smoke_ok
|
||||
else
|
||||
echo "qt6-wayland-smoke wayland failed; see $smoke_wayland_log" > $smoke_err
|
||||
end
|
||||
end
|
||||
[service]
|
||||
cmd = "/usr/bin/redbear-greeterd"
|
||||
envs = { VT = "3", REDBEAR_GREETER_USER = "greeter" }
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/bin/redbear-kde-session"
|
||||
mode = 0o755
|
||||
path = "/usr/lib/init.d/29_activate_console.service"
|
||||
data = """
|
||||
#!/usr/bin/sh
|
||||
[unit]
|
||||
description = "Activate fallback console VT"
|
||||
requires_weak = [
|
||||
"05_boot-essential.target",
|
||||
]
|
||||
|
||||
export DISPLAY=""
|
||||
export WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}"
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export KDE_FULL_SESSION=true
|
||||
export XDG_CURRENT_DESKTOP=KDE
|
||||
export LIBSEAT_BACKEND=seatd
|
||||
export SEATD_SOCK=/run/seatd.sock
|
||||
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH:-/usr/plugins}"
|
||||
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH:-/usr/plugins/platforms}"
|
||||
export QML2_IMPORT_PATH="${QML2_IMPORT_PATH:-/usr/qml}"
|
||||
export XCURSOR_THEME="${XCURSOR_THEME:-Pop}"
|
||||
export XKB_CONFIG_ROOT="${XKB_CONFIG_ROOT:-/usr/share/X11/xkb}"
|
||||
|
||||
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
|
||||
export XDG_RUNTIME_DIR="/tmp/run/user/$(id -u)"
|
||||
fi
|
||||
|
||||
mkdir -p "$XDG_RUNTIME_DIR"
|
||||
chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null || true
|
||||
|
||||
if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then
|
||||
eval "$(dbus-launch --sh-syntax)"
|
||||
fi
|
||||
|
||||
validation_request="/run/redbear-kde-session.validation-request"
|
||||
validation_success="/run/redbear-kde-session.validation-success"
|
||||
|
||||
if [ -f "$validation_request" ]; then
|
||||
{
|
||||
echo "user=$USER"
|
||||
echo "runtime=$XDG_RUNTIME_DIR"
|
||||
echo "wayland=$WAYLAND_DISPLAY"
|
||||
} > "$validation_success"
|
||||
rm -f "$validation_request"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
dbus-update-activation-environment \
|
||||
DBUS_SESSION_BUS_ADDRESS \
|
||||
DBUS_SESSION_BUS_PID \
|
||||
WAYLAND_DISPLAY \
|
||||
XDG_SESSION_ID \
|
||||
XDG_SEAT \
|
||||
XDG_SESSION_TYPE \
|
||||
XDG_RUNTIME_DIR \
|
||||
XDG_CURRENT_DESKTOP \
|
||||
KDE_FULL_SESSION \
|
||||
DISPLAY \
|
||||
HOME \
|
||||
USER
|
||||
|
||||
if [ -n "$KWIN_DRM_DEVICES" ]; then
|
||||
exec kwin_wayland_wrapper --drm
|
||||
else
|
||||
echo "redbear-kde-session: using virtual KWin backend (set KWIN_DRM_DEVICES to enable DRM)" >&2
|
||||
exec kwin_wayland_wrapper --virtual
|
||||
fi
|
||||
[service]
|
||||
cmd = "inputd"
|
||||
args = ["-A", "2"]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/30_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Console terminals"
|
||||
requires_weak = [
|
||||
"29_activate_console.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["2"]
|
||||
type = "oneshot_async"
|
||||
respawn = true
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/31_debug_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Debug console"
|
||||
requires_weak = [
|
||||
"29_activate_console.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["/scheme/debug/no-preserve", "-J"]
|
||||
type = "oneshot_async"
|
||||
respawn = true
|
||||
"""
|
||||
|
||||
[users.greeter]
|
||||
password = ""
|
||||
uid = 101
|
||||
gid = 101
|
||||
name = "greeter"
|
||||
home = "/nonexistent"
|
||||
shell = "/usr/bin/ion"
|
||||
|
||||
[groups.greeter]
|
||||
gid = 101
|
||||
members = ["greeter"]
|
||||
|
||||
[[files]]
|
||||
path = "/etc/pcid.d/ihdgd.toml"
|
||||
data = """
|
||||
[[drivers]]
|
||||
name = "Intel GPU (VGA compatible)"
|
||||
class = 0x03
|
||||
vendor = 0x8086
|
||||
subclass = 0x00
|
||||
command = ["redox-drm"]
|
||||
|
||||
[[drivers]]
|
||||
name = "Intel GPU (3D controller)"
|
||||
class = 0x03
|
||||
vendor = 0x8086
|
||||
subclass = 0x02
|
||||
command = ["redox-drm"]
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/etc/pcid.d/virtio-gpud.toml"
|
||||
data = """
|
||||
[[drivers]]
|
||||
name = "VirtIO GPU"
|
||||
class = 0x03
|
||||
vendor = 0x1af4
|
||||
subclass = 0x00
|
||||
command = ["redox-drm"]
|
||||
"""
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# Red Bear OS GRUB Live Full Configuration
|
||||
# Canonical GRUB-backed live ISO for the full desktop/session target.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-grub-live-full
|
||||
#
|
||||
# Boot flow: UEFI → GRUB (menu) → chainload EFI/REDBEAR/redbear.efi → Redox bootloader → kernel
|
||||
# Session: graphical greeter on VT 3, text login fallback on VT 2, debug console on /scheme/debug
|
||||
#
|
||||
# The installer reads bootloader = "grub" from this config and writes:
|
||||
# EFI/BOOT/BOOTX64.EFI — GRUB EFI binary (primary bootloader)
|
||||
# EFI/BOOT/grub.cfg — GRUB menu config
|
||||
# EFI/REDBEAR/redbear.efi — Redox bootloader (chainload target)
|
||||
|
||||
include = ["redbear-live.toml", "redbear-grub.toml"]
|
||||
@@ -1,9 +0,0 @@
|
||||
# Red Bear OS GRUB Live Mini Configuration
|
||||
# Canonical GRUB-backed live ISO for the stripped console/recovery target.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-grub-live-mini
|
||||
|
||||
include = ["redbear-live-mini.toml", "redbear-grub.toml"]
|
||||
|
||||
[general]
|
||||
efi_partition_size = 16
|
||||
@@ -0,0 +1,9 @@
|
||||
# Red Bear OS shared GRUB policy fragment
|
||||
# Use with any redbear-* profile to make GRUB first-class in installer flows.
|
||||
|
||||
[general]
|
||||
bootloader = "grub"
|
||||
efi_partition_size = 16
|
||||
|
||||
[packages]
|
||||
grub = {}
|
||||
@@ -1,11 +1,16 @@
|
||||
# Red Bear OS shared GRUB policy fragment
|
||||
# Use with any redbear-* profile to make GRUB first-class in installer flows.
|
||||
# Red Bear OS GRUB Configuration
|
||||
# Text-only ISO with GRUB boot manager for bare metal.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-grub
|
||||
#
|
||||
# Identical to redbear-mini but uses GNU GRUB as the boot manager
|
||||
# instead of the Redox EFI bootloader.
|
||||
|
||||
include = ["redbear-mini.toml", "redbear-grub-policy.toml"]
|
||||
|
||||
[general]
|
||||
bootloader = "grub"
|
||||
# Keep ESP large enough for GRUB EFI image + Red Bear bootloader + future growth.
|
||||
efi_partition_size = 16
|
||||
|
||||
[packages]
|
||||
# Ensure GRUB artifacts are present for installer-native chainload layout.
|
||||
grub = {}
|
||||
|
||||
@@ -1,381 +0,0 @@
|
||||
# Red Bear OS Target Wayland Desktop Configuration
|
||||
# Build: make all CONFIG_NAME=redbear-kde
|
||||
# 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
|
||||
# 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"]
|
||||
|
||||
[general]
|
||||
filesystem_size = 4096
|
||||
|
||||
[users.messagebus]
|
||||
uid = 100
|
||||
gid = 100
|
||||
name = "messagebus"
|
||||
home = "/nonexistent"
|
||||
shell = "/usr/bin/ion"
|
||||
|
||||
[packages]
|
||||
# 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 = {}
|
||||
|
||||
# Firmware loading + Wi-Fi control plane
|
||||
redbear-firmware = {}
|
||||
firmware-loader = {}
|
||||
redbear-wifictl = {}
|
||||
|
||||
# Input layer
|
||||
evdevd = {}
|
||||
udev-shim = {}
|
||||
|
||||
# D-Bus (session + system bus)
|
||||
dbus = {}
|
||||
redbear-sessiond = {}
|
||||
redbear-dbus-services = {}
|
||||
redbear-notifications = {}
|
||||
redbear-upower = {}
|
||||
redbear-udisks = {}
|
||||
redbear-polkit = {}
|
||||
|
||||
# Diagnostic/runtime tooling
|
||||
redbear-info = {}
|
||||
redbear-hwutils = {}
|
||||
redbear-netctl = {}
|
||||
redbear-netctl-console = {}
|
||||
redbear-netstat = {}
|
||||
redbear-traceroute = {}
|
||||
redbear-mtr = {}
|
||||
redbear-nmap = {}
|
||||
cub = {}
|
||||
|
||||
# Wayland protocol
|
||||
libwayland = {}
|
||||
wayland-protocols = {}
|
||||
|
||||
# Input
|
||||
libxkbcommon = {}
|
||||
libevdev = {}
|
||||
libinput = {}
|
||||
|
||||
# Seat management
|
||||
seatd = {}
|
||||
|
||||
# Qt6 stack
|
||||
qtbase = {}
|
||||
qtdeclarative = {}
|
||||
qtsvg = {}
|
||||
qtwayland = {}
|
||||
|
||||
# KF6 Frameworks — Tier 1 (no special deps)
|
||||
kf6-extra-cmake-modules = {}
|
||||
kf6-kcoreaddons = {}
|
||||
kf6-kconfig = {}
|
||||
kf6-ki18n = {}
|
||||
kf6-kcolorscheme = {}
|
||||
kf6-kauth = {}
|
||||
|
||||
# KF6 Frameworks — KWin session-surface chain
|
||||
kf6-kwindowsystem = {}
|
||||
kf6-knotifications = {}
|
||||
kf6-kconfigwidgets = {}
|
||||
kf6-kcrash = {}
|
||||
kf6-kdbusaddons = {}
|
||||
kf6-kglobalaccel = {}
|
||||
kf6-kservice = {}
|
||||
kf6-kpackage = {}
|
||||
kf6-kiconthemes = {}
|
||||
kirigami = {}
|
||||
kf6-kio = {}
|
||||
kf6-kdeclarative = {}
|
||||
kf6-kcmutils = {}
|
||||
kf6-kwayland = {}
|
||||
kdecoration = {}
|
||||
|
||||
# KDE session surface (v2.0 Phases 3–4)
|
||||
kwin = {}
|
||||
|
||||
# Graphics
|
||||
redox-drm = {}
|
||||
mesa = {}
|
||||
libdrm = {}
|
||||
|
||||
# Firmware directory for AMD/Intel GPU blobs
|
||||
[[files]]
|
||||
path = "/lib/firmware/amdgpu"
|
||||
data = ""
|
||||
directory = true
|
||||
mode = 0o755
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/12_dbus.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "D-Bus system bus"
|
||||
requires_weak = [
|
||||
"00_base.target",
|
||||
]
|
||||
|
||||
[service]
|
||||
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"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-upower.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "UPower D-Bus service (org.freedesktop.UPower)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-upower",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-udisks.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "UDisks2 D-Bus service (org.freedesktop.UDisks2)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-udisks",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-polkit.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "PolicyKit1 D-Bus service (org.freedesktop.PolicyKit1)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-polkit",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/20_display.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Display session service (KDE session)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
"13_redbear-sessiond.service",
|
||||
"13_seatd.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "/usr/bin/redbear-kde-session"
|
||||
envs = { VT = "3" }
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/30_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Console terminals"
|
||||
requires_weak = [
|
||||
"29_activate_console.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["2"]
|
||||
type = "oneshot_async"
|
||||
respawn = true
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/29_activate_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Activate display VT"
|
||||
requires_weak = [
|
||||
"20_display.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "inputd"
|
||||
args = ["-A", "3"]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/31_debug_console.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Debug console"
|
||||
requires_weak = [
|
||||
"29_activate_console.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["/scheme/debug/no-preserve", "-J"]
|
||||
type = "oneshot_async"
|
||||
respawn = true
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/bin/redbear-kde-session"
|
||||
mode = 0o755
|
||||
data = """
|
||||
#!/usr/bin/sh
|
||||
|
||||
export DISPLAY=""
|
||||
export HOME="${HOME:-/home/root}"
|
||||
export USER="${USER:-root}"
|
||||
export LOGNAME="${LOGNAME:-$USER}"
|
||||
export WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}"
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export KDE_FULL_SESSION=true
|
||||
export XDG_CURRENT_DESKTOP=KDE
|
||||
export LIBSEAT_BACKEND=seatd
|
||||
export SEATD_SOCK=/run/seatd.sock
|
||||
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH:-/usr/plugins}"
|
||||
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH:-/usr/plugins/platforms}"
|
||||
export QML2_IMPORT_PATH="${QML2_IMPORT_PATH:-/usr/qml}"
|
||||
export XCURSOR_THEME="${XCURSOR_THEME:-Pop}"
|
||||
export XKB_CONFIG_ROOT="${XKB_CONFIG_ROOT:-/usr/share/X11/xkb}"
|
||||
|
||||
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
|
||||
export XDG_RUNTIME_DIR="/tmp/run/user/$(id -u)"
|
||||
fi
|
||||
|
||||
mkdir -p "$XDG_RUNTIME_DIR"
|
||||
chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null || true
|
||||
|
||||
wait_for_path() {
|
||||
target="$1"
|
||||
attempts=0
|
||||
while [ "$attempts" -lt 30 ]; do
|
||||
if [ -e "$target" ]; then
|
||||
return 0
|
||||
fi
|
||||
attempts=$((attempts + 1))
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
if ! wait_for_path /run/dbus/system_bus_socket; then
|
||||
echo "system D-Bus socket did not appear" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
|
||||
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_ID \
|
||||
XDG_SEAT \
|
||||
XDG_SESSION_TYPE \
|
||||
XDG_RUNTIME_DIR \
|
||||
XDG_CURRENT_DESKTOP \
|
||||
KDE_FULL_SESSION \
|
||||
DISPLAY \
|
||||
HOME \
|
||||
USER
|
||||
|
||||
if [ -z "${KWIN_DRM_DEVICES:-}" ] && [ -e /scheme/drm/card0 ]; then
|
||||
export KWIN_DRM_DEVICES=/scheme/drm/card0
|
||||
fi
|
||||
|
||||
exec kwin_wayland_wrapper --drm
|
||||
"""
|
||||
@@ -23,8 +23,6 @@ data = """
|
||||
# clear and recreate tmpdir with 0o1777 permission
|
||||
rm -rf /tmp
|
||||
mkdir -m a=rwxt /tmp
|
||||
|
||||
nowait sudo --daemon
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
# Red Bear OS Live Full Configuration with GRUB Boot Manager
|
||||
# Legacy compatibility alias for the canonical GRUB full live target.
|
||||
#
|
||||
# Preferred build: make live CONFIG_NAME=redbear-grub-live-full
|
||||
# Legacy build: make live CONFIG_NAME=redbear-live-full-grub
|
||||
|
||||
include = ["redbear-grub-live-full.toml"]
|
||||
@@ -1,7 +0,0 @@
|
||||
# Red Bear OS Live Full Configuration
|
||||
# Legacy compatibility alias for the canonical full live target.
|
||||
#
|
||||
# Preferred build: make live CONFIG_NAME=redbear-live
|
||||
# Legacy build: make live CONFIG_NAME=redbear-live-full
|
||||
|
||||
include = ["redbear-live.toml"]
|
||||
@@ -1,7 +0,0 @@
|
||||
# Red Bear OS Live Mini Configuration with GRUB Boot Manager
|
||||
# Legacy compatibility alias for the canonical GRUB mini live target.
|
||||
#
|
||||
# Preferred build: make live CONFIG_NAME=redbear-grub-live-mini
|
||||
# Legacy build: make live CONFIG_NAME=redbear-live-mini-grub
|
||||
|
||||
include = ["redbear-grub-live-mini.toml"]
|
||||
@@ -1,6 +0,0 @@
|
||||
# Red Bear OS Live Minimal Configuration with GRUB Boot Manager
|
||||
# Live ISO for minimal console target with installer-native GRUB chainload.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-live-minimal-grub
|
||||
|
||||
include = ["redbear-live-minimal.toml", "redbear-grub.toml"]
|
||||
@@ -1,12 +0,0 @@
|
||||
# Red Bear OS Live Minimal Configuration
|
||||
# Live ISO variant for the minimal console/server target.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-live-minimal
|
||||
|
||||
include = ["redbear-minimal.toml"]
|
||||
|
||||
[general]
|
||||
filesystem_size = 3072
|
||||
|
||||
[packages]
|
||||
cub = {}
|
||||
@@ -1,15 +0,0 @@
|
||||
# Red Bear OS Live Configuration
|
||||
# Canonical full live ISO target for the desktop/session surface on real bare metal.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-live
|
||||
# This ISO is for real bare-metal boot/install/recovery, not VM/QEMU use.
|
||||
|
||||
include = ["redbear-full.toml"]
|
||||
|
||||
[general]
|
||||
filesystem_size = 3072
|
||||
efi_partition_size = 1
|
||||
|
||||
[packages]
|
||||
cub = {}
|
||||
redbear-meta = {}
|
||||
@@ -1,19 +1,26 @@
|
||||
# Red Bear OS Live Mini Configuration
|
||||
# Live ISO variant for console/recovery/install on bare metal.
|
||||
# Red Bear OS Mini Configuration
|
||||
# Text-only ISO for console/recovery/install on bare metal.
|
||||
#
|
||||
# Build: make live CONFIG_NAME=redbear-live-mini
|
||||
# Build: make live CONFIG_NAME=redbear-mini
|
||||
#
|
||||
# Target contract:
|
||||
# - keep a text-login live/recovery surface only
|
||||
# - use boot framebuffer for VT text consoles via vesad + fbcond
|
||||
# - ship all non-graphics, non-firmware packages from the full profile
|
||||
# - ship no linux-firmware payload, no firmware-loader, no GPU/display drivers
|
||||
# - text-login live/recovery/install surface
|
||||
# - boot framebuffer for VT text consoles via vesad + fbcond
|
||||
# - all non-graphics, non-firmware packages from the full profile
|
||||
# - no linux-firmware payload, no firmware-loader, no GPU/display drivers
|
||||
|
||||
include = ["minimal.toml", "redbear-legacy-base.toml", "redbear-netctl.toml"]
|
||||
|
||||
[general]
|
||||
filesystem_size = 1536
|
||||
|
||||
[users.messagebus]
|
||||
uid = 100
|
||||
gid = 100
|
||||
name = "messagebus"
|
||||
home = "/nonexistent"
|
||||
shell = "/usr/bin/ion"
|
||||
|
||||
[packages]
|
||||
# Red Bear OS branding and host utilities.
|
||||
redbear-release = {}
|
||||
@@ -188,11 +195,25 @@ cmd = "i2cd"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/etc/init.d/00_i2c-dw-acpi.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "DesignWare ACPI I2C controller (non-blocking)"
|
||||
requires_weak = [
|
||||
"00_i2cd.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "dw-acpi-i2cd"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/etc/init.d/00_intel-gpiod.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Intel ACPI GPIO registrar (non-blocking on live-mini)"
|
||||
description = "Intel ACPI GPIO registrar (non-blocking)"
|
||||
requires_weak = [
|
||||
"00_gpiod.service",
|
||||
"00_i2cd.service",
|
||||
@@ -222,7 +243,7 @@ type = "oneshot_async"
|
||||
path = "/etc/init.d/00_i2c-hidd.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "ACPI I2C HID bring-up daemon (non-blocking on live-mini)"
|
||||
description = "ACPI I2C HID bring-up daemon (non-blocking)"
|
||||
requires_weak = [
|
||||
"00_i2cd.service",
|
||||
"00_i2c-dw-acpi.service",
|
||||
@@ -1,6 +0,0 @@
|
||||
# Red Bear OS Minimal Configuration with GRUB Boot Manager
|
||||
# Minimal console/server target with installer-native GRUB chainload.
|
||||
#
|
||||
# Build: make all CONFIG_NAME=redbear-minimal-grub
|
||||
|
||||
include = ["redbear-minimal.toml", "redbear-grub.toml"]
|
||||
@@ -1,219 +0,0 @@
|
||||
# Red Bear OS Minimal Configuration
|
||||
# Console/Server variant with bare-metal driver support but no GUI.
|
||||
# Includes all non-graphics, non-firmware packages from the full profile.
|
||||
#
|
||||
# Build: make all CONFIG_NAME=redbear-minimal
|
||||
|
||||
include = ["minimal.toml", "redbear-legacy-base.toml", "redbear-device-services.toml", "redbear-netctl.toml"]
|
||||
|
||||
[general]
|
||||
# Minimal image carries the full non-graphics package set;
|
||||
# 2048 MiB accommodates CLI tools, D-Bus services, and filesystem utilities.
|
||||
filesystem_size = 2048
|
||||
|
||||
[packages]
|
||||
# Red Bear OS branding
|
||||
redbear-release = {}
|
||||
|
||||
# Native Redox PCI/USB listing tools (lspci, lsusb)
|
||||
redbear-hwutils = {}
|
||||
|
||||
# Redox-native netctl compatibility command
|
||||
redbear-netctl = {}
|
||||
redbear-netctl-console = {}
|
||||
|
||||
# Native network reporting and connect-scan tools
|
||||
redbear-netstat = {}
|
||||
redbear-traceroute = {}
|
||||
redbear-mtr = {}
|
||||
redbear-nmap = {}
|
||||
|
||||
# Wi-Fi control plane (firmware-loader comes from redbear-device-services.toml)
|
||||
firmware-loader = {}
|
||||
redbear-wifictl = {}
|
||||
|
||||
# Input/runtime service prerequisites
|
||||
evdevd = {}
|
||||
udev-shim = {}
|
||||
|
||||
# Terminal file manager
|
||||
mc = {}
|
||||
|
||||
# Diagnostic tool
|
||||
redbear-info = {}
|
||||
|
||||
# Package builder (cub -S/-B/-G CLI)
|
||||
cub = {}
|
||||
|
||||
# ── D-Bus IPC and session services ──
|
||||
dbus = {}
|
||||
redbear-sessiond = {}
|
||||
redbear-dbus-services = {}
|
||||
redbear-notifications = {}
|
||||
redbear-upower = {}
|
||||
redbear-udisks = {}
|
||||
redbear-polkit = {}
|
||||
|
||||
# ── IOMMU DMA remapping ──
|
||||
iommu = {}
|
||||
|
||||
# ── Standard CLI tools (from server profile) ──
|
||||
bash = {}
|
||||
bottom = {}
|
||||
curl = {}
|
||||
diffutils = {}
|
||||
findutils = {}
|
||||
git = {}
|
||||
htop = {}
|
||||
|
||||
# ── Filesystem support ──
|
||||
ext4d = {}
|
||||
redoxfs = {}
|
||||
|
||||
# ── System installer ──
|
||||
installer = {}
|
||||
|
||||
# ── Build / packaging utilities ──
|
||||
patchelf = {}
|
||||
shared-mime-info = {}
|
||||
|
||||
[[files]]
|
||||
path = "/etc/netctl/active"
|
||||
data = "wired-dhcp\n"
|
||||
|
||||
[[files]]
|
||||
path = "/etc/issue"
|
||||
data = """
|
||||
########## Red Bear OS #########
|
||||
# Login with the following: #
|
||||
# `user` #
|
||||
# `root`:`password` #
|
||||
################################
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/etc/motd"
|
||||
data = """
|
||||
Red Bear OS v0.1.0 "Denali" — Built on Redox OS
|
||||
Type 'help' for available commands.
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/12_dbus.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "D-Bus system bus"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
]
|
||||
|
||||
[service]
|
||||
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 = "/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"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/13_iommu.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "IOMMU DMA remapping daemon"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "/usr/bin/iommu"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-upower.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "UPower D-Bus service (org.freedesktop.UPower)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-upower",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-udisks.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "UDisks2 D-Bus service (org.freedesktop.UDisks2)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-udisks",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/usr/lib/init.d/14_redbear-polkit.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "PolicyKit1 D-Bus service (org.freedesktop.PolicyKit1)"
|
||||
requires_weak = [
|
||||
"12_dbus.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "ion"
|
||||
args = [
|
||||
"-c",
|
||||
"redbear-polkit",
|
||||
]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/var/lib/dbus"
|
||||
data = ""
|
||||
directory = true
|
||||
mode = 0o755
|
||||
|
||||
[[files]]
|
||||
path = "/run/dbus"
|
||||
data = ""
|
||||
directory = true
|
||||
mode = 0o755
|
||||
|
||||
# VT/getty/login chain: initfs starts inputd + vesad + fbcond in phase 1,
|
||||
# then minimal.toml legacy 30_console runs inputd -A 2 + getty 2 + getty debug.
|
||||
@@ -1,16 +0,0 @@
|
||||
# Red Bear OS Wayland Validation Profile
|
||||
#
|
||||
# Build: ./local/scripts/build-redbear.sh redbear-wayland
|
||||
# Phase 1 substrate validation: ./local/scripts/test-phase1-desktop-substrate.sh --qemu redbear-wayland
|
||||
# Phase 2 Wayland validation: ./local/scripts/test-phase4-wayland-qemu.sh
|
||||
#
|
||||
# Validation-only profile:
|
||||
# - the packaged compositor/runtime harness remains bounded
|
||||
# - this profile remains the bounded validation slice beneath redbear-kde -> kwin_wayland
|
||||
|
||||
include = ["wayland.toml"]
|
||||
|
||||
[packages]
|
||||
redbear-firmware = {}
|
||||
redox-drm = {}
|
||||
qt6-wayland-smoke = {}
|
||||
Reference in New Issue
Block a user