# C# 桌面第四轮预览 本轮继续使用 C# NativeAOT 自研裸机桌面,移除系统顶部栏;最大化窗口使用屏幕顶部空间,底部保留任务栏。Settings 可从桌面第五个图标或任务栏右侧打开,支持 Light/Dark、五个预设强调色及 `#RRGGBB`。外观配置保存在 `X:\System\Settings\Appearance.json`,当前为 RAM 会话,关闭后重置。 标题栏仅有最小化和关闭;双击仍最大化/还原。最小化与关闭图标使用 180ms 平滑悬停动画,中途移开连续反向。标题拖动提示和右下缩放入口同样使用原生像素抗锯齿与交互反馈。窗口拖动可复用上一帧不含指针的内文区域,缩放时保留仍有效的不透明内文,边框、标题和背景按实际损伤区域更新。复用会避开指针、行数变化和长行重新截断的位置,Settings 的条件布局不复用。 ## 启动 解压本版 ZIP,在包目录执行: ```powershell 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 项计划检查。汇总见 [验收报告](../Validation/CSharpDesktopPreview4-20261014-Final.md) 与 [机器可读证据](../Validation/CSharpDesktopPreview4-20261014-Final.json)。 - 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/桌面验收可执行: ```powershell 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保留。