C# 桌面第四轮预览
本轮继续使用 C# NativeAOT 自研裸机桌面,移除系统顶部栏;最大化窗口使用屏幕顶部空间,底部保留任务栏。Settings 可从桌面第五个图标或任务栏右侧打开,支持 Light/Dark、五个预设强调色及 #RRGGBB。外观配置保存在 X:\System\Settings\Appearance.json,当前为 RAM 会话,关闭后重置。
标题栏仅有最小化和关闭;双击仍最大化/还原。最小化与关闭图标使用 180ms 平滑悬停动画,中途移开连续反向。标题拖动提示和右下缩放入口同样使用原生像素抗锯齿与交互反馈。窗口拖动可复用上一帧不含指针的内文区域,缩放时保留仍有效的不透明内文,边框、标题和背景按实际损伤区域更新。复用会避开指针、行数变化和长行重新截断的位置,Settings 的条件布局不复用。
启动
解压本版 ZIP,在包目录执行:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Start.ps1 -QemuPath "C:\Program Files\qemu\qemu-system-x86_64.exe"
交互 auto 默认核对同一镜像、内核和源快照的 TCG 通过记录,再选择 TCG。此前本机 WHPX 的无 GUI 验收通过,但实际 GTK 曾在固件阶段超过90秒;同配置 TCG 约8秒就绪。显式 -Acceleration whpx 保留为实验选项,不能将无 GUI 通过当作 GTK 已启动。
默认请求普通最大化 GTK 窗口并适配完整桌面;宿主视口会重采样,来宾原生4K及独立布局缩放不变。-NativePixels 关闭适配,较小窗口可能裁切;与 -FitToWindow 互斥。Win/Alt+Tab 等来宾快捷键需要 QEMU 捕获键盘,按窗口 Ctrl+Alt+G 提示切换。
源码目录启动可传 Tools/OpenCSharp.ps1 -ImagePath … -VerifiedBootResult <完整WHPX记录> -VerifiedTcgBootResult <同镜像TCG记录>。包内自动验证随附 TCG 记录及清单哈希。没有匹配对照时,auto/TCG拒绝启动,避免将未经验证的加速配置冒充已验收。
验收方式与边界
本版为 XFESystem-CSharp-Preview4-Final-20261014.zip,实际通过 419 项宿主检查、4 项独立宿主 DOM 检查、51 项完整来宾检查(13 项基线、10 项 HTTP、28 项桌面),以及同镜像 TCG 的 28 项桌面对照和 PowerShell5 的 8 项计划检查。汇总见 验收报告 与 机器可读证据。
- WHPX 完整验收:
build/CSharpBoot/Proof-1791949054028844600/Result.json。 - 同镜像 TCG 桌面对照:
build/CSharpBoot/Proof-1791949204993440000/Result.json;此轮没有重复 HTTP,HTTP 依据为上面的同镜像完整验收。 - PS5 启动计划:
build/CSharpBoot/ViewportPlan-DesktopPreview4-ManifestFinal.json;计划不创建 GUI,不自动输入,不访问物理磁盘。
两次实际磁盘引导均为 3840×2160 / 200%,QEMU 正常退出0,完整镜像不变,源快照相同。镜像 SHA256 为 417dbc5b3cdc1ccfcfb68428c1fa7326d0c8fbbc41622c705c48a5e0fc50d145,内核为 2234b9457a662e386f46bd790a9062324aaeec18edc3ba9fbbd87e80bc1fcf5e,源快照为 cce4ce9dd1910a690578daf18e5d220b091a4b1b0970a6f48a9f725513f56678。
原 Preview4-20261014 候选包因 PowerShell5 将顶层 JSON 数组嵌套而阻断自动TCG清单校验,已在 Final 修正;旧包、ZIP和失败证据完整保留。使用原候选包的独立副本和修正启动脚本,通过实际生成的 Start 包装入口及10条清单的6项回归,覆盖正常自动发现、篡改、重复/缺失条目和不同镜像拒绝;记录为 build/CSharpBoot/PackagedLauncher-Preview4-Fix.json。这项回归不启动GUI,新原生验收已重新绑定修正后的全部Tools。
| 加速模式 / 操作 | 活动提交率中位数 | 平均复制像素/帧 | 最后单帧耗时 |
|---|---|---|---|
| WHPX / 光标 | 228.39 帧/秒 | 2,293 | 0.009 ms |
| WHPX / 文档滚动 | 229.23 帧/秒 | 76,800 | 0.316 ms |
| WHPX / 拖动窗口 | 224.78 帧/秒 | 1,995,767 | 1.932 ms |
| WHPX / 调整窗口大小 | 229.80 帧/秒 | 687,594 | 2.077 ms |
| TCG / 光标 | 231.41 帧/秒 | 2,289 | 0.084 ms |
| TCG / 文档滚动 | 150.83 帧/秒 | 76,800 | 4.875 ms |
| TCG / 拖动窗口 | 59.18 帧/秒 | 2,003,572 | 15.848 ms |
| TCG / 调整窗口大小 | 69.42 帧/秒 | 702,382 | 12.354 ms |
每项连续输入至少3.1秒,实际约498次/秒,中位数来自活动期间完整的一秒区间。JSON 另存含约0.9秒尾部空闲的全窗口均值,不能与本表混称。相对本轮优化前保留的 TCG 记录 Proof-1791947353762317100,缩放提交率由38.73提升到69.42,平均复制像素由2,042,992降至702,382,约减少65.6%;仍不能宣称持续240帧或所有交互均已丝滑。
完整基线/HTTP/桌面验收可执行:
python Tools/CSharpBoot/TestBoot.py --desktop-ui --desktop-v4 --resolution 0x0 --edid-resolution 3840x2160 --refresh-hint 240 --video-memory-mib 64 --accel whpx --input-rate 500
随后把该轮的 System.img 和 Result.json 作为 --verified-image、--verified-boot-result 传入相同命令,并增加 --desktop-ui-only、改用 --accel tcg。Tools/TestDesktopUi.py 是提供这些显示默认值的包装入口。新增验收包括原始PPM动画中间/反向帧、四项进度诊断、窗口拖动/缩放密集输入、实际内文复用计数,以及与Win+D完整重绘相同状态截图的零残影比较。
两模式最小化/关闭图标都捕获到进入与反向的不同中间帧,最终恢复与初始图像零差异。拖动和缩放后同一窗口状态的局部绘制截图,与强制完整重绘的全幅截图逐像素比较均为0差异;实际复用计数均大于0。顶部空白区与桌面颜色相同,底部原生任务栏完整存在。截图证明来宾 framebuffer;宿主实际视口与可见呈现仍需真实操作窗口观察。
Tools/CSharpBoot/TestLauncherViewport.ps1 在 PowerShell5 中验证视口与自动TCG策略,CreateReport.py --DesktopV4 --ViewportPlan … 对真实验收记录、像素证据、相同镜像及源快照进行严格核对。计划检查不启动GUI,也不能替代最终实际窗口观察。
文件与设置均为 RAM live,关机后消失。Markdown 沿用指定网站的 Markdig/清理管线,来宾预览目前提取清理后的文本;完整网站 HTML/CSS/数学/图表渲染只在宿主独立验收,不冒充来宾完成。受限 JavaScript/DOM 和受控 HTTP 已实际测试;原生 HTTPS 尚未移植。
性能表报告来宾提交率,不将EDID目标240Hz当作物理呈现/VSync。完整CoreCLR/.NET10、Framework4.8、应用隔离、持久文件系统、多屏窗口管理与实体设备驱动仍未完成。旧发行目录和ZIP保留。