一个设计师的 PS 平替移植记

Adobe 用不了之后,我从微博刷到一款开源图像编辑器,下载下来被 macOS 拦下。然后用 AI 加一堆报错,把它搬到了自己的旧 Mac 上。

Adobe 的软件用不了了,原因大家都知道。我日常出图改图切图都在它上面,得赶紧找个能替的。

试了几个。Photopea 网页打开就用,文件一大就卡。GIMP 免费的,但界面逻辑我怎么用怎么别扭。Affinity Photo 听说不错,看了眼价格放弃了。

周一早上挤地铁刷微博,关注的一个设计博主发了 Compositor。开源免费,macOS 原生的界面。我顺着摸到作者的 GitHub,他在 README 里写「Photoshop 太贵,GIMP 又用不顺手」——跟我一模一样。他是做影像合成和后期的,软件就是按他自己干活的流程做的。

晚上回家把汉化版下下来,拖进应用程序,双击,弹窗说需要 macOS 26.5 或更高版本。我这台才 15.8。

macOS 提示:此应用程序需要 macOS 26.5 或更高版本

按说到这就该算了。但那个界面截图我翻出来看了好几次,工具栏和面板的排布一看就是天天用 PS 的人摆出来的。我没舍得删。


我跑去问 AI,这软件开源的,能不能下个源码自己编一个 15.8 能跑的。它说能,给我三条路:直接装官方包,系统直接拒;装 Xcode 编,要 Apple ID 还要下 11 GB;用系统自带的命令行工具编。第三条我原来听都没听过,是我问它「没 Xcode 是不是就没戏了」它才提的。那就这条。

官方要求 26.5,我的机器 15.8,中间像隔了整整一年的跨度

编之前先搞明白官方包为什么不让装。它写着要 26.5,里面还用了一批只有新系统才有的东西,我这台没有,就算装上了跑起来也会崩。改版本号骗系统也没用,运行的时候还会再查一遍。

那就编吧。


源码拉下来,一编,报错。80 个文件。

查了半天,原因是工程里有个配置只有新版编译器认识,作者靠它约定「代码默认跑在主线程上」。我这台的编译器版本低,不认这个配置,于是所有代码都被当成「不在主线程」,凡是碰界面的全报错。

同一个开关,两个编译器读出两个意思

我把报错整段贴给 AI。它让我给类和数据加标记。改完一轮,报错少了一半,剩下那一半反而更多。来回磨了几个小时,才发现有一种叫「扩展」的代码它也漏了——这种代码得跟着它所属的类型一起加标记。这回我没再问它,自己照着把同类的文件都改了。


编过了还不算完,得把它装进一个能双击的 App 里,而装壳要用的工具又只有 Xcode 有。后来发现官方安装包里那个 App 本来就是完整的,图标、中文语言包、界面图都在。我把官方包留着,把自己编出来的程序塞进去,改掉里面那行最低版本声明,再本地签个名。

能开了。


能开之后我给它加了个东西。这个版本没有自动更新,上游发了新版我不可能每周自己去查,所以加了个常驻按钮。整个项目里只有这个按钮是我正经设计的。

更新按钮的五种状态:尚未检查、正在检查、已是最新、有新版本、检查失败

五种状态。踩过的坑:「有新版本」这个状态得记在本地,不然每次开软件都要先等一次网络请求,红点就没意义了。红点要画在图标边界里面,我第一次画出去被工具栏裁掉一半,看着像坏了。点按钮直接用系统弹窗,不自己画。

还有个坑是上游留下的。它的更新检查会过滤掉「要求系统版本比本机高」的版本,我是 15.8,所有新版本都被过滤掉了,按钮永远显示已是最新。可我是从源码编的,上游要求什么系统跟我能不能跑没关系。把这道过滤删了,只比版本号。


Compositor 在我的 macOS 15.8 上跑起来

跑起来之后查了一遍依赖:从系统里找到 2147 个,缺 0 个。官方原版在我这台上缺 15 个,必崩。

跟原版不完全一样的地方也记一下:工具栏标签条多了一条背景色,原版在 26 上是透明的,那个接口 15 没有;字体和混合模式的选择器圆角是系统默认样,没有新版那种胶囊形;编译没开优化,13 MB,启动慢一拍;只是本地签名,我这台能用,要给别人得重新签名公证。


弄完这些,我跟 AI 说把代码和安装包存到我自己的 git 里,以后每次更新也存。它跟我要仓库地址和一个 GitHub token,我现去设置里生成了一个,勾 repo 权限,贴给它。十几分钟后它说好了:main 分支是上游原版,macos15-port 分支是我的改动,7 个提交,Release 里挂着 5.3 MB 的安装包。

它还在仓库里放了个 sync-to-git.sh。以后改了代码,跑一句就自动提交推送;装了新的安装包,跑一句就打好包发 Release。中途有个我不知道的事:本地仓库是浅克隆,第一次推送失败了,它自己补全了历史再推,做完才跟我说。


用了差不多两个月,每周一两张主视觉是它出的。

仓库在 GitHub,Mac 升不动系统的可以去看。