Skip to content

CFDesktop 桌面本体规划文档


一、项目背景与现状

1.1 项目定性

CFDesktop 是一个基于 Qt 6.8.3+ / C++23 开发的嵌入式桌面 UI 框架,遵循 Material Design 3 规范。当前版本(0.13.1)本质上是一个UI 组件库 + 底层架构,尚不构成完整的桌面环境。

本文档的目标是在现有基础上,规划**桌面本体(Desktop Shell)**的完整建设路径。

1.2 当前已完成的基础(可复用)

模块完成度可复用价值
工程骨架(CMake/CI/CD)100%✅ 直接复用
Material Design 3 Token 系统100%✅ 主题系统基础
ThemeEngine 主题管理(QuarkWidgets MD3 引擎)100%✅ UI 框架主题引擎;桌面 ThemeStyleManager + iOS/Win11 主题包 ⬜0%(Phase G 待做)
AnimationManager 动画引擎100%✅ 桌面过渡动效基础
DPI 管理部分⚠️ 仅组件层 devicePixelRatioF 隐式处理;独立 DPIManager 注入(Phase B B3)待做
19个 P0+P1 控件100%✅ 桌面 Shell UI 基础
Google Test 测试框架100%✅ 持续集成基础
CPU/内存/GPU/网络检测器90%✅ 硬件探针基本完成
ConfigStore 配置中心100%✅ 四层存储,INI持久化
Logger 日志系统100%✅ 异步日志,多Sink
Windows 显示后端100%✅ Win32 DWM + HWND
WSL X11 显示后端100%✅ XCB + XWayland
显示服务器抽象 (IDisplayServerBackend)100%✅ 仅三模式接口 + outputs() 只读枚举;RenderBackend 具体后端与 Factory 实现 0%(Phase B 待做,6ULL 必需的 EGLFS/LinuxFB 待做)
窗口管理基础 (WindowManager/PanelManager)80%✅ 基础注册/查询/弱引用

1.3 当前关键缺口(桌面本体的前置依赖)

缺口模块当前进度对桌面本体的影响
输入抽象层(InputManager)0%🔴 所有交互的根基,必须最先完成
HWTier 硬件分级系统✅ 已完成检测/评分/Assessor/Policy 接口 + DefaultPolicy 已落地(base/system/hardware_tier/);仅 CapabilityPolicy 策略引擎(档位→降级接 Shell)延后
CrashHandler 崩溃处理0%🟡 稳定性保障
IPC 进程间通信0%🔴 多进程架构硬阻塞:CrashHandler Phase2 / NotificationService / MediaService / 设置 App 跨进程 / Widget 进程隔离均依赖
P2 高级控件(27个)0%🟡 文件管理器等应用依赖

二、需求定义

2.1 目标用户与场景

主要面向

  • 开源社区与个人开发者

典型使用场景

  • 嵌入式 Linux 设备上运行一个完整的桌面环境
  • 开发者在 Windows 上开发调试,部署到 Linux 嵌入式设备
  • 设备厂商基于 CFDesktop 定制自己品牌的桌面风格

2.2 目标硬件规格

档位硬件规格行为策略
Low Tier无独立 GPU,≤512MB RAM,ARM Cortex-A5/A7关闭动效、简化阴影、降低合成层数
Mid Tier弱 GPU,1-2GB RAM,ARM Cortex-A53/A55基础动效开启,限制并发动画数量
High Tier独立 GPU,≥4GB RAM,ARM Cortex-A72/A76+全量动效、模糊/透明效果全开

HWTier 系统是整个性能自适应的核心判据,必须在桌面本体启动前完成探测并注入全局配置。

2.3 屏幕与输入规格

  • 屏幕尺寸:5.5 ~ 10.1 英寸矩形触摸屏
  • 分辨率:变化范围较大,依赖现有 DPI 管理模块动态适配
  • 输入方式:触摸(单点/多点手势)+ 鼠标键盘(开发调试/PC风格主题)
  • 操作系统:Linux 主力部署;Windows 作为开发调试等价环境

2.4 渲染后端策略

采用多后端抽象层,运行时按环境选择:

text
渲染后端抽象层(RenderBackend Interface)
    ├── EGLFS / LinuxFB   → 嵌入式 Linux 直驱(主要部署环境)
    ├── Wayland Client    → 跑在现有 Wayland 合成器之上
    ├── X11               → 旧版 Linux 桌面兼容
    └── Windows (Win32)   → 开发调试等价环境

不自研 Wayland Compositor,优先保证嵌入式 EGLFS 直驱路径的稳定性。

2.5 应用模型

  • 多应用自由切换(类手机/PC 体验)为主,同时支持 Kiosk 全屏模式配置
  • 进程隔离:每个 App 独立进程,桌面 Shell 作为宿主进程(Compositor Process)
  • 系统服务:核心服务单进程(通知/窗口管理/输入路由),可选服务(媒体控制/设置服务)独立进程,服务以插件式形式挂载
  • IPC 机制:优先使用 Qt 自带机制(QLocalSocket / Shared Memory),如复杂度不可控再迁移 D-Bus

2.6 商业模式

MIT 开源协议,无商业授权限制。


三、桌面本体功能定义

3.1 核心子系统总览

text
CFDesktop Shell
├── 主题风格系统(Theme Style System)
│   ├── iOS 风格主题包
│   └── Windows 11 风格主题包
├── 窗口管理器(Window Manager)
├── 任务栏 / 导航系统(Shell Navigation)
├── 应用启动器(App Launcher)
├── 通知系统(Notification System)
├── 快捷控制中心(Control Center)
├── 系统设置(System Settings App)
├── 锁屏模块(Lock Screen)
├── 桌面壁纸与 Widget 系统(Desktop Layer)
├── 文件管理器(File Manager App)
├── 媒体控制服务(Media Control Service)
└── 硬件性能自适应引擎(HWTier Adaptive Engine)

3.2 双主题风格系统(核心特色)

CFDesktop 的核心差异化特性:支持整体主题包切换 + 组件级微调

iOS 风格主题包

特性描述
导航范式底部手势条(类 iOS Home Indicator)+ 底部 Tab Bar
启动器网格图标桌面(类 iOS 主屏),支持图标拖拽排列
窗口过渡全屏滑入/滑出(类 iOS App 打开/关闭动效)
任务切换上滑调出卡片式任务切换器(类 iOS App Switcher)
控制中心右上角下滑展开圆角磁贴面板
通知顶部下滑展开通知列表
字体/圆角大圆角卡片,SF Pro 风格字体层级
动效风格弹簧动效(Spring Animation),响应灵敏

Windows 11 风格主题包

特性描述
导航范式底部居中任务栏(类 Win11 Centered Taskbar)
启动器点击任务栏图标展开开始菜单(类 Win11 Start Menu)
窗口过渡缩放淡入淡出(类 Win11 窗口动效)
任务切换任务栏悬停预览缩略图 + Task View 全览
控制中心右下角系统托盘区点击展开快捷面板(类 Win11 Quick Settings)
通知右侧滑出通知中心面板(类 Win11 Action Center)
字体/圆角中圆角,Segoe UI 风格字体层级
动效风格时间曲线动效(Ease In/Out),流畅稳重

主题切换架构

text
ThemeStyleManager
    ├── loadThemePack(ThemePack::iOS / ThemePack::Windows)
    ├── 注入 ThemeEngine(颜色 Token)
    ├── 注入 NavigationPolicy(导航范式)
    ├── 注入 AnimationPolicy(动效策略)
    ├── 注入 LayoutPolicy(圆角/间距/字体)
    └── 触发 Shell 重新布局

主题包切换是运行时热切换,无需重启桌面进程。

3.3 窗口管理器

  • 浮动窗口模式(可拖拽/缩放,Windows 风格主题默认)
  • 全屏平铺模式(iOS 风格主题默认)
  • 分屏模式:左右/上下固定分割
  • 窗口层级管理:Z-order 管理,支持 Always On Top
  • 窗口动效:开启/关闭/最小化/恢复均有主题对应动效
  • 多显示器:基础支持(后期扩展)

3.4 Shell 导航系统

导航组件根据当前主题包动态切换形态,不硬编码:

text
NavigationPolicy Interface
    ├── iOS Policy   → BottomGestureBar + BottomTabBar
    └── Windows Policy → CenteredTaskbar + SystemTray

公共元素(跨主题):

  • 顶部状态栏(时间、网络、电量、通知角标)
  • 应用标题区(返回按钮/窗口控制按钮随主题变化)

3.5 通知系统

对标 iOS 通知中心 + Windows Action Center,要求完善

text
NotificationService(独立进程)
    ├── 通知接收 API(App 调用)
    ├── 通知持久化存储(ConfigStore 依赖)
    ├── 分组/折叠(按 App 归组)
    ├── 优先级分级(Critical / Normal / Silent)
    ├── 横幅弹窗(Banner,自动消失)
    ├── 通知中心面板(下拉/侧滑展开,可清除)
    ├── 角标计数(状态栏图标角标)
    └── 勿扰模式(Do Not Disturb)

3.6 快捷控制中心

对标 iOS Control Center + Windows Quick Settings:

  • 亮度滑条
  • 音量滑条
  • WiFi / 蓝牙 快捷开关
  • 截图
  • 勿扰模式切换
  • 主题风格快速切换入口
  • 自定义快捷瓦片(开发者可注册)

3.7 系统设置 App

对标 KDE System Settings + Windows 设置,内置完整设置 App:

分类设置项
显示分辨率、亮度、夜间模式、缩放比例
声音音量、输出设备、提示音
网络WiFi 列表、IP 配置、代理
蓝牙设备配对管理
桌面主题包切换、壁纸、动效开关
输入触摸灵敏度、鼠标速度、键盘布局
应用已安装应用列表、权限管理、默认应用
语言语言/地区/时区(框架预留,后期实现)
辅助字体大小缩放、高对比度(后期实现)
系统关于本机、硬件信息(HWTier 展示)、日志查看

3.8 锁屏模块

  • PIN / 密码 / 图案三种解锁方式
  • 锁屏壁纸(独立于桌面壁纸,或继承)
  • 锁屏通知展示(仅 Normal 及以上级别)
  • 息屏超时自动锁屏(可配置时长)
  • 锁屏时媒体控制卡片(正在播放时展示)

3.9 桌面壁纸 + Widget 系统

壁纸

  • 静态壁纸(Low Tier 及以上)
  • 动态壁纸(High Tier,视频/Lottie 动画,Mid/Low 自动降级为静态)
  • 主题联动:主题包切换时自动推荐配套壁纸

桌面 Widget(小组件)

  • 内置 Widget:时钟、日历、天气、系统资源监控
  • Widget 框架:开发者可注册自定义 Widget(提供 Widget API)
  • Widget 编辑模式(长按进入,支持拖拽/缩放)
  • iOS 风格:Widget 与图标共存于网格桌面
  • Windows 风格:Widget 区域独立(类 Win11 Widgets Panel)

3.10 文件管理器 App

对标 Windows 资源管理器,内置完整文件管理器:

  • 目录树导航(左侧面板)
  • 文件列表视图(图标/列表/详情切换)
  • 基础文件操作(复制/剪切/粘贴/删除/重命名)
  • 文件搜索
  • 压缩包浏览(后期)
  • 文件选择器对话框(供应用调用的系统级 API)

3.11 媒体控制服务

  • 系统级媒体会话管理(跨 App 统一控制)
  • 状态栏/锁屏媒体卡片(播放/暂停/上下曲)
  • 快捷控制中心媒体区块
  • 音量控制与输出设备切换
  • 蓝牙音频设备快速切换(依赖蓝牙模块)

四、架构分层设计

text
┌─────────────────────────────────────────────────────────┐
│                   Layer 7: Apps Layer                    │
│         文件管理器 / 系统设置 / 内置 Widget App           │
├─────────────────────────────────────────────────────────┤
│                   Layer 6: Shell Layer                   │
│   任务栏 / 启动器 / 通知中心 / 控制中心 / 锁屏 / 桌面层   │
├─────────────────────────────────────────────────────────┤
│               Layer 5: Theme Style System                │
│         iOS主题包 / Windows主题包 / ThemeStyleManager     │
├─────────────────────────────────────────────────────────┤
│               Layer 4: Window Manager                    │
│          浮动/全屏/分屏 / Z-order / 窗口动效              │
├─────────────────────────────────────────────────────────┤
│               Layer 3: System Services                   │
│   NotificationService / MediaService / InputRouter       │
├─────────────────────────────────────────────────────────┤
│               Layer 2: Base Infrastructure               │
│   InputManager / ConfigStore / Logger / IPC              │
├─────────────────────────────────────────────────────────┤
│               Layer 1: Hardware Abstraction              │
│      HardwareProbe / HWTier / RenderBackend              │
├─────────────────────────────────────────────────────────┤
│               Layer 0: Already Completed                 │
│   ThemeEngine / AnimationManager / DPI / P0 Controls     │
└─────────────────────────────────────────────────────────┘

设计原则

  • 每层只依赖下层,严禁跨层调用
  • Layer 5(主题风格系统)横切 Layer 4-6,通过 Policy 注入而非直接调用
  • 系统服务通过 IPC 与 Shell 通信,Shell 不直接持有服务实现

五、开发路线图

节奏定义:不赶时间,架构分层优先,质量优先,每个 Phase 完成后需通过完整测试才可进入下一 Phase。


Phase A:基础设施补全(前置必做)

对应现有 Phase 1/2 的未完成部分,是桌面本体的地基

A1 — 硬件探针完善

  • GPU 检测器(DRM 设备枚举、OpenGL 上下文探测)
  • HWTier 枚举定义(Low / Mid / High)
  • HardwareProbe 主类(整合 CPU + 内存 + GPU 探测)
  • CapabilityPolicy 策略引擎(各档位默认配置集)
  • 单元测试覆盖

A2 — ConfigStore 配置中心

  • 四层存储模型:System → User → App → Temp(与 1.2 节 / current.md 对齐)
  • 变更监听机制(Observer 模式)
  • 持久化序列化(JSON / QSettings 后端)
  • 线程安全访问
  • 单元测试覆盖

A3 — Logger 日志系统

  • 多 Sink 支持(文件 / 终端 / 系统日志)
  • 日志级别(Debug / Info / Warning / Error / Fatal)
  • 日志轮转(大小/时间)
  • 结构化日志(JSON 格式可选)
  • 单元测试覆盖

A4 — 输入抽象层

  • InputManager 统一分发层
  • TouchInputHandler(单点 + 多点手势识别)
  • KeyInputHandler(键盘/快捷键)
  • MouseInputHandler(鼠标 + 滚轮)
  • GestureRecognizer(Tap / LongPress / Swipe / Pinch / Pan)
  • FocusNavigator(焦点导航系统)
  • 单元测试 + UI 自动化测试框架搭建

A5 — IPC 基础层 ⬜ 0% 待实现(非"已设计"——代码核实 IPCMessage/IPCClient/IPCServer/ServiceLocator 零命中)

🔴 硬阻塞项:CrashHandler Phase2 / NotificationService / MediaService / 系统设置 App 跨进程 / Widget 进程隔离均依赖本层,须作为基础设施首批落地。绝不引入 D-Bus(嵌入式不可用)。single-instance 锁(QLockFile)成本最低,优先做。

  • QLocalSocket 封装(进程间消息信道)
  • 消息序列化协议定义
  • 服务注册/发现机制(ServiceLocator)
  • single-instance 单例锁(QLockFile / lockfile)
  • 基础测试覆盖

里程碑验收标准

  • HWTier 可在目标设备上正确探测并输出档位
  • ConfigStore 可持久化读写并触发变更通知
  • 触摸/鼠标/键盘输入均可通过 InputManager 统一路由
  • 两个进程可通过 IPC 层互相发送消息

Phase B:渲染后端抽象层

解决"同一代码跑在 EGLFS / Wayland / Windows"的问题

B1 — RenderBackend 接口定义

  • RenderBackend 抽象接口(初始化/交换缓冲/截图/VSync)
  • 后端注册机制(运行时按环境选择)

B2 — EGLFS 后端

  • Qt EGLFS 封装
  • HWTier 联动:High Tier 开启 OpenGL ES 合成,Low Tier 降级 LinuxFB

B3 — Windows 等价后端

  • Qt Windows 后端封装
  • 开发调试辅助工具:屏幕尺寸模拟(5.5" / 8" / 10.1" 三档快速切换)

B4 — Wayland/X11 后端

  • 跑在现有 Wayland/X11 合成器之上的支持(次优先)

里程碑验收标准

  • 同一 Shell 代码在 Linux EGLFS 和 Windows 上均可启动
  • 屏幕尺寸模拟器可在 Windows 上精确还原嵌入式屏幕效果

Phase C:P1 控件补全 ✅ 已完成 (2026-03-18)

Shell UI 所需的基础控件,与 Phase A/B 并行推进

已实现控件(12个):

优先级控件桌面依赖场景状态
P1-1Slider亮度/音量控制
P1-2Switch设置开关项
P1-3ProgressBar下载/加载状态
P1-4TabView设置分类导航
P1-5ComboBox设置下拉选项
P1-6ListView列表显示
P1-7TableView表格显示
P1-8TreeView树形显示
P1-9ScrollView滚动视图
P1-10Separator分隔线
P1-11SpinBox整数输入
P1-12DoubleSpinBox浮点输入

待实现 P2 控件(文件管理器等依赖):

  • ToolBar / ToolButton
  • MenuBar / ContextMenu
  • StatusBar
  • Dialog / Card / Snackbar
  • Tooltip / Popover
  • ...

Phase D:窗口管理器

Shell 核心,建立在 Phase A/B 完成之后

D1 — 窗口模型

  • WindowInfo(标题/图标/PID/状态/几何/层级)
  • 窗口状态机(Normal / Maximized / Minimized / Fullscreen / Closing)
  • Z-order 管理(层级排序)

D2 — 布局策略

  • FullscreenPolicy(iOS 风格默认)
  • FloatingPolicy(Windows 风格默认,支持拖拽/缩放)
  • SplitPolicy(左右/上下分屏)
  • 策略运行时切换(随主题包切换自动切换默认策略)

D3 — 窗口动效

  • 开启动效(按主题包:iOS 弹入 / Win 缩放淡入)
  • 关闭动效
  • 最小化/恢复动效
  • HWTier 联动:Low Tier 关闭窗口动效

D4 — 任务切换

  • iOS 风格:上滑卡片式 App Switcher(缩略图预览)
  • Windows 风格:Task View 全览 + 任务栏悬停预览

里程碑验收标准

  • 可在桌面上打开/关闭/切换至少 3 个并发应用窗口
  • iOS/Windows 两种布局策略均可正常运作
  • 窗口动效在 Mid/High Tier 流畅,Low Tier 自动关闭

Phase E:Shell 导航 + 任务栏

桌面的"骨架",用户每次使用都会接触

E1 — 状态栏(Status Bar)

  • 时间/日期显示
  • 网络状态图标
  • 电量图标(如有硬件支持)
  • 通知角标区
  • 主题联动(iOS:居中时间;Windows:左侧时间 + 右侧系统托盘)

E2 — iOS 风格导航

  • 底部手势条(Home Indicator)
  • 手势识别:上滑回主屏 / 上滑停留进 App Switcher / 左右滑切换应用
  • 底部 Tab Bar(可配置应用快捷入口)

E3 — Windows 风格导航

  • 居中任务栏(固定应用图标 + 运行中应用)
  • 系统托盘区(时间/通知图标/媒体控制入口)
  • 开始按钮(触发 App Launcher)

E4 — 应用启动器

  • iOS 风格:网格图标桌面(图标拖拽/文件夹/多页滑动)
  • Windows 风格:开始菜单(最近使用 + 固定应用 + 全部应用列表)
  • 全局搜索(应用/文件/设置 统一搜索入口)

里程碑验收标准

  • 两种主题的导航体系均可独立运作
  • 主题包切换后导航形态热切换无需重启
  • 应用启动器可浏览和启动所有已安装应用

Phase F:通知系统 + 控制中心

完善程度对标 iOS / Windows 11

F1 — NotificationService(独立进程)

  • 通知接收 API(Qt IPC)
  • 通知持久化(ConfigStore 依赖)
  • 优先级分级(Critical / Normal / Silent)
  • 勿扰模式

F2 — 横幅弹窗(Banner)

  • 顶部滑入展示,3秒自动消失(可配置)
  • 可展开操作按钮(最多2个快捷操作)
  • HWTier:Low Tier 仅显示文字,关闭展开动效

F3 — 通知中心面板

  • iOS 风格:顶部下拉展开
  • Windows 风格:右侧滑出面板
  • 分组折叠(按 App)
  • 全部清除 / 单条清除

F4 — 快捷控制中心

  • 亮度/音量滑条
  • WiFi / 蓝牙 / 勿扰 / 截图 快捷开关
  • 媒体控制卡片(当有音乐播放时展示)
  • 主题切换入口
  • 自定义瓦片注册 API

里程碑验收标准

  • 任意进程可通过 API 发送通知并在桌面正常展示
  • 通知中心可展示、分组、清除通知
  • 控制中心亮度/音量调节生效

Phase G:主题风格系统完整实现

双主题包的完整实现与热切换

G1 — ThemeStyleManager 核心

  • ThemePack 数据结构定义(颜色/圆角/间距/动效/布局策略 完整集)
  • 主题包加载/卸载机制
  • 热切换协调器(通知所有订阅方)
  • 主题包文件格式定义(JSON + 资源文件)

G2 — iOS 主题包

  • 完整颜色 Token 集(对标 iOS 17 Human Interface Guidelines)
  • 布局策略注入(NavigationPolicy / WindowPolicy)
  • 动效策略注入(Spring Animation 参数集)
  • 图标风格(圆角矩形图标,带阴影)
  • 壁纸默认集(3-5 张高质量默认壁纸)

G3 — Windows 11 主题包

  • 完整颜色 Token 集(对标 Windows 11 Fluent Design)
  • 布局策略注入
  • 动效策略注入(Ease 曲线参数集)
  • Mica/Acrylic 效果(High Tier 开启,模糊半透明)
  • 壁纸默认集(3-5 张)

G4 — 组件级微调 API

  • 每个 P0/P1 控件暴露 StyleOverride 接口
  • 用户可在主题包基础上微调单个控件样式
  • 微调配置持久化(ConfigStore)

里程碑验收标准

  • iOS / Windows 两套主题包均完整可用
  • 运行时热切换主题无崩溃、无视觉撕裂
  • 动效在各 HWTier 按策略正确降级

Phase H:系统设置 App

对标 KDE System Settings + Windows 设置(参见 3.7 节功能定义)

开发要点

  • 作为独立进程启动,通过 IPC 调用各系统服务
  • 设置项变更实时生效(不需要重启)
  • 设置界面本身也遵循当前主题风格
  • 搜索功能:可在所有设置项中模糊搜索

Phase I:锁屏模块

参见 3.8 节功能定义

开发要点

  • 锁屏运行在最高 Z-order 层,不可被其他窗口覆盖
  • 解锁验证逻辑与凭证存储安全隔离
  • 锁屏时输入路由只处理解锁相关输入
  • 息屏策略与 HWTier 联动(Low Tier 更激进的息屏超时)

Phase J:桌面 Widget + 壁纸系统

参见 3.9 节功能定义

开发要点

  • Widget 沙箱机制(Widget 崩溃不影响 Shell)
  • Widget API 设计需兼顾未来第三方开发者接入
  • 动态壁纸严格限制 High Tier 才启用,防止低端设备性能问题

Phase K:文件管理器 App

参见 3.10 节功能定义

开发要点

  • 依赖 P1 控件:ToolBar / ToolButton / StatusBar / ContextMenu
  • 文件选择器对话框作为系统级 API 独立封装,所有 App 均可调用
  • 支持主题联动(iOS/Windows 风格自动切换界面布局)

Phase L:媒体控制服务

参见 3.11 节功能定义

开发要点

  • MediaService 作为独立插件进程,可选挂载
  • 与 NotificationService 协作(媒体通知类型)
  • 锁屏媒体卡片与锁屏模块联动

Phase M:P2 高级控件 + SDK 初稿

此阶段桌面本体已基本完整,开始向外暴露开发者接口

  • P2 控件按需实现(Dialog / Card / Snackbar / Tooltip 等,按使用频率排序)
  • C++ SDK 头文件整理与文档编写
  • QML 接口层(低门槛开发者接口,后期扩展)
  • 开发者文档网站更新(MkDocs)

六、依赖关系图

text
Phase A(基础设施)
    ├──→ Phase B(渲染后端)
    ├──→ Phase C(P1 控件)[可并行]
    └──→ Phase D(窗口管理器)
              └──→ Phase E(Shell 导航)
                        └──→ Phase F(通知 + 控制中心)
                                  └──→ Phase G(主题系统完整实现)
                                            ├──→ Phase H(系统设置)
                                            ├──→ Phase I(锁屏)
                                            ├──→ Phase J(Widget + 壁纸)
                                            ├──→ Phase K(文件管理器)
                                            └──→ Phase L(媒体服务)
                                                      └──→ Phase M(SDK + P2 控件)

可并行开发的模块

  • Phase C(P1 控件)可与 Phase A/B 全程并行
  • Phase H / I / J / K / L 在 Phase G 完成后可并行推进
  • 文档编写、测试补全可贯穿全程

七、测试策略

7.1 测试分层

层次内容工具
单元测试每个类/模块的独立测试Google Test / GMock
集成测试跨模块协作测试(如输入→窗口→通知)Google Test
UI 自动化测试鼠标/触摸/键盘模拟操作流程Qt Test / 自研
性能基准测试帧率/内存/CPU 占用基线自研 Benchmark 框架
HWTier 回归测试模拟三档硬件环境验证降级策略硬件 Mock + Docker

7.2 性能指标目标

指标Low Tier 目标Mid Tier 目标High Tier 目标
Shell 启动时间< 3s< 1.5s< 0.8s
应用启动时间< 2s< 1s< 0.5s
桌面帧率30 FPS(静态)45 FPS60 FPS
通知弹窗延迟< 200ms< 100ms< 50ms
主题切换时间< 500ms< 300ms< 200ms
Shell 内存占用< 80MB< 150MB< 300MB

八、关键设计决策记录

决策选择理由
IPC 机制Qt IPC(QLocalSocket)优先,必要时迁移 D-Bus减少依赖,嵌入式环境 D-Bus 不一定可用
渲染后端多后端抽象,不自研 Wayland Compositor降低复杂度,嵌入式 EGLFS 直驱更稳定
主题切换运行时热切换,Policy 注入而非硬编码用户体验好,架构扩展性强
应用模型进程隔离,Shell 作为宿主稳定性更好,一个 App 崩溃不影响 Shell
动效策略HWTier 联动,可配置不可强制关闭低端设备保证性能,高端设备保证体验
SDK 时机Phase M(桌面本体基本完整后)再开放先把自己的桌面做好,API 稳定后再开放
商业协议MIT 开源最大化社区采用,无授权障碍

九、附录:参考项目

参考对象学习要点
iOS / iPadOS手势体系、弹簧动效、控制中心交互、通知分组
Windows 11Fluent Design、任务栏居中、快捷设置面板、Action Center
KDE Plasma高度可定制架构、系统设置结构、Wayland 集成方式
Android通知优先级体系、快捷设置瓦片自定义、Widget 沙箱机制

Built with VitePress