
AI 摘要
- Cutefish 推出自研相容層 Reef,可在 Linux 上直接執行 Mac 應用程式。
- Reef 超過 30 萬行程式碼,橫跨 70 多個框架,目前仍只覆蓋 macOS 的一小部分。
- Reef 暫不開源,官方表示未來是否開放將視社群贊助情況而定。
Linux 桌面環境 Cutefish 於 10 月 23 日在官方部落格宣布,旗下自研相容層 Cutefish Reef 已能執行 Mac 應用程式,連住在選單列的小工具(menu bar apps)也能運行。Mac App 在 Cutefish 上會以一般視窗開啟,選單出現在 Cutefish 選單列,圖示則顯示於 Dock,與其他桌面應用並無二致。官方強調,示範截圖中的每一個 App 都未經修改或重新編譯,就是 Mac 用戶平常下載的同一個檔案。

為什麼難度很高
Mac App 本身幾乎不具備獨立運作的能力。開啟視窗、顯示選單、繪製文字、計算日期,都必須呼叫 macOS 的框架,例如視窗與控制項依賴 AppKit、文字與日期依賴 Foundation、繪圖依賴 Core Graphics、新式介面依賴 SwiftUI,另有數十個其他框架。這些在 Linux 上都不存在,因此必須自行實作,且行為需與 macOS 高度一致,否則容易出現排版錯誤、畫面空白或直接崩潰。
Cutefish Reef 的技術規模
根據來源資料,Reef 超過 30 萬行程式碼,橫跨 70 多個框架,其中 AppKit 與 Foundation 各自超過 7 萬行。其底層還包括 Mach-O 執行檔載入器、Objective-C 執行環境、Swift 支援與底層系統函式庫。官方也坦言,目前覆蓋的只是 macOS 的一小部分,系統中仍有數以萬計的函式尚待實作。

逐一應用的開發方式
由於無法預先得知某個 App 會使用 macOS 的哪些功能,Cutefish 採取逐一應用測試的方式:執行真實的 Mac App,觀察其在哪裡失敗,例如缺少哪個函式、視窗哪裡繪製錯誤或哪個按鈕沒有反應,接著研究 macOS 的對應行為,實作為通用功能並加入測試。官方列出的問題包括:
- 下拉選單與旁邊標籤的文字基準線計算方式與 macOS 不同,導致設定視窗中的下拉選單偏移數點。
- macOS 會自動為檔名結尾為「Template」的圖片套用色調,Reef 初期漏掉此功能,使某 App 的視窗按鈕變成粗黑圈。
- 閒置視窗因不當的重繪觸發,每秒重繪超過一百次。
- App 會檢查所跑的 macOS 版本並改變行為,因此每個版本差異都需要逐一處理。
- SwiftUI 的內部實作並未公開,團隊依據文件實作後,再與真實 Mac 的輸出逐像素比對。

實測表現
選單列 App 是最大的考驗之一。Cutefish 為此設計了狀態列項目支援,允許 App 自行繪製項目、決定寬度,彈出視窗會顯示在正下方。來源指出,選單列日期工具 Itsycal 的日期顯示、月曆彈窗、右鍵選單與設定視窗均運作正常。其他測試包括文字編輯器 TextMate 與十六進位編輯器 Hex Fiend 可正常開檔編輯;待辦事項軟體 Things 3 可以啟動,但部分介面仍未完成。

合法性與授權說明
官方表示,Reef 的程式碼為自行開發,未使用 Darling 或 Wine 的程式碼,也不拆解或複製蘋果未開源的 macOS 軟體,且未使用蘋果的開發套件。研發時參考蘋果公開文件,並將行為與真實 Mac 上的表現進行對照,即所謂的無塵室設計。Reef 另採用蘋果開源的平台元件,包括 Core Foundation、Grand Central Dispatch、Swift 標準庫與 LZFSE 壓縮格式等,依原授權納入。
與 Darling、Wine 的比較
在 Linux 上執行 macOS 軟體,最知名的專案是 Darling。Wine 則長年為 Windows 軟體提供相容層。Reef 採取與 Wine 相似的路線,重新實作 Mac 的程式介面。以下為來源資料可確認的比較:
| 專案 | 主要目標 | 適用範圍 |
|---|---|---|
| Cutefish Reef | 圖形介面的 Mac App | 僅限 Cutefish 桌面,不涵蓋命令列工具 |
| Darling | 一般 macOS 軟體,命令列與底層系統支援領先 Reef | 任何 Linux 桌面皆可使用 |
| Wine | 為 Windows 軟體提供相容層 | Windows 軟體覆蓋率極為龐大 |

未來發展與授權規劃
Reef 目前暫不開源。官方表示,此項投資規模龐大,且屬於 Cutefish 的差異化功能,需要在成長期加以保護,未來是否開放則視社群贊助能否支撐相關工作而定。接下來的主要目標包括完成 Things 3 的支援、補強 SwiftUI 相容性,以及開發 web 引擎支援,因為許多 App 依賴該引擎。目前方案僅支援 Cutefish 桌面。
如今官方把定位改成「美麗的 agentic Linux 發行版」,還留著社群版下載站。
小結
Cutefish Reef 的目標是讓 Linux 使用者直接執行既有的 Mac 應用程式,無須等待開發者移植。目前已能運行 Itsycal、TextMate、Hex Fiend 等 App,但在 SwiftUI 補完度、web 引擎進度以及閉源策略走向等方面,仍是後續觀察重點。
Reference Link : kocpc.com.tw




