设计基线 v0.1 · Phase 0–7 样例已跑通

让桌面
动起来

对标 Wallpaper Engine / Lively 的 Windows 动态壁纸引擎。 视频、Web、3D 场景三类壁纸统一调度,挂靠在桌面图标之下,托盘常驻,全屏自动让路。

GPL-3.0 开源 .NET 10 LTS WinUI 3
Capabilities

三类壁纸,一套调度

不是把窗口盖在桌面上,而是真正挂进 WorkerW;全屏、锁屏、断电、Explorer 崩溃都按策略处理。

视频壁纸

libmpv wid 进程内嵌入,D3D11VA 硬件解码,暂停即释放显存,FPS 滤镜可叠加。

Web 壁纸

WebView2 共享 WorkerW,鼠标 / 音频通过 JS bridge 双向通信,脚本走安全 allowlist。

3D 场景壁纸

Silk.NET + D3D11 图层渲染,GLSL 着色器、QuickJS 脚本、音频 FFT 驱动,带实时统计面板。

桌面挂靠

经典 WorkerW + Win11 raised desktop 双路径,Explorer 重启自动重挂,逐屏 DPI 适配。

全屏三档策略

前台全屏检测触发暂停 / 释放 / 静态快照三档降级,退出全屏自动恢复,不抢焦点不掉帧。

多显示器

每个「壁纸 × 显示器」独立 RenderHost 子进程,Job Object 兜底,拔屏 / 改分辨率自动重建。

看门狗与电源

子进程心跳 + 崩溃自恢复;电池 / 节电模式自动降档,睡眠唤醒后重新挂载。

单文件安装器

WinUI 3 非打包 + 自包含运行时,单 exe 安装包,Velopack 增量更新(规划中)。

Architecture

选型与进程模型

主 UI / 编排进程负责一切决策,渲染全部下沉到子进程 —— 一个壁纸崩了,桌面不受影响。

运行时.NET 10 LTS
界面WinUI 3(非打包 · Fluent / Mica)
场景渲染Silk.NET · D3D11(Vortice 备选)
视频libmpv · wid 嵌入式
WebWebView2 · raw controller
IPCstdio 管道 + 长度前缀 + MessagePack
进程隔离Job Object + 看门狗心跳
桌面挂靠WorkerW / raised desktop 双路径
配置JSON(分类 / 历史 / 标题覆盖)
许可证GPL-3.0
Roadmap

已经走到哪一步

每个阶段都有可运行的样例与测试报告,产物都在仓库里。

Phase 0技术验证 已完成

WorkerW 挂靠 / D3D11 场景 / raw WebView2 / libmpv / IPC 五个 spike,出测量报告。

Phase 2视频壁纸 已完成

libmpv 子进程 + D3D11VA + stdio IPC + 暂停释放显存;10 分钟稳定性、损坏视频用例。

Phase 3Web 壁纸 已完成

共享 WorkerW、鼠标 / 音频 JS bridge、脚本 allowlist、DPI 与文本缩放处理。

Phase 4场景壁纸 已完成

D3D11 图层合成、GLSL 转译、QuickJS 脚本、音频 FFT、统计面板。

Phase 5主调度器 已完成

全屏检测、三档降级策略、多显示器、看门狗、电源事件。

Phase 6WinUI 3 主界面 已完成

分类 / 缩略图 / 属性 / 设置 / 托盘 / 自启动 / JSON 配置,含用户流程测试报告。

Phase 7产品化

单文件安装器、兼容性清单、资源占用指标、Velopack 自动更新。

Quick start

跑起来

源码 + 样例工程都在仓库里,本机需要 .NET 10 SDK 与 Windows App Runtime。

# 克隆仓库
git clone https://github.com/Princess-Atri/wallerpaper.git
cd wallerpaper

# 直接跑样例(无需编译)
.\run-wallpaper.cmd

# 或用 VS 打开解决方案
start Wallerpaper.sln

环境要求

  • Windows 10/11(WorkerW 挂靠依赖桌面合成)
  • .NET 10 SDK 编译;发布版自带运行时
  • Windows App Runtime:WinUI 3 非打包必需
  • WebView2 Runtime:Web 壁纸必需
  • VC++ Redistributable:libmpv / 原生依赖按需

把桌面交给壁纸

代码、设计文档、测试报告全部开源。欢迎 issue、PR,或者直接拿去做自己的桌面引擎。