Ghostty 1.0 is Coming

Mitchell Hashimoto

Ghostty 1.0 即將推出

經過近兩年的開發與私人封測1,我很興奮地宣布,Ghostty 1.0 將於 2024 年 12 月以 MIT 授權的開源專案形式公開發布。

在這篇部落格文章中,我想重申 Ghostty 專案的整體目標,並說明 1.0 版本的具體目標。我對 Ghostty 有著宏大的規劃,但我也想清楚界定大家在首日可以期待什麼,以及未來會帶來什麼。

簡而言之,Ghostty 1.0 的目標是成為 macOS 與 Linux 上你現有終端機模擬器的最佳無痛替代方案。Ghostty 將會快速、功能豐富,並具備原生平台圖形介面,同時是目前最符合標準的終端機模擬器。


最佳的現有終端機模擬器

這張來自我在 2023 年 9 月 Zig Showtime 演講的投影片,最能概括我為何開始打造一款新的終端機模擬器:

投影片 7

受限於投影片的版面設計,比較的終端機模擬器數量有限,但核心觀點不變:我認為現有的終端機模擬器讓人在速度、功能與原生平台圖形介面之間被迫做出不必要的取捨。2

透過 Ghostty,我的目標是打造一款既快速、功能豐富、又具備原生平台圖形介面,同時仍能跨平台運行的終端機模擬器。我相信 Ghostty 1.0 已經實現了這些目標。

這個目標聚焦於成為最佳的現有終端機模擬器。在此目標下,Ghostty 1.0 並非試圖在終端機的功能上創新,而是要在當今的 macOS 與 Linux 上提供最出色的單一終端機模擬器體驗。3

當然,Ghostty 並非完美或完整。我並未實作每一款終端機模擬器的所有功能,因此 Ghostty 仍有許多尚未具備的功能。然而,我相信隨著我持續改進,Ghostty 將能滿足絕大多數使用者的需求。


快速、功能豐富且原生平台

我從尚未使用過 Ghostty 的人那裡收到的最常見回饋,是對這些差異是否真的重要抱持懷疑。而從已經使用過 Ghostty 的人那裡收到的最常見回饋,則是他們沒想到差異竟如此之大,甚至無法想像再回到過去。

Ghostty 所謂的快速、功能豐富與原生平台究竟意味著什麼?這每一項都是龐大而複雜的議題,因此我在此僅就各個面向點出幾個重點。

以「快速」來說,我最近在 Systems Distributed 2024 上發表了一場 5 分鐘的閃電講,題目是「讓終端機模擬器變得超級、超級快:Ghostty」(時間戳連結至 50:15)。這場演講很好地概述了 Ghostty 在效能上的用心,但由於只是閃電講,內容並未涵蓋全部。

以「功能豐富」來說,Ghostty 首要目標是盡可能支援最廣泛的終端機應用程式。這意味著 Ghostty 支援比任何其他終端機模擬器(除了 xterm 本身)更多的 xterm 跳脫序列。Ghostty 也支援幾乎所有現代終端機規格,例如樣式化底線、Kitty 鍵盤協定、圖形協定等。(雖不是終端機跳脫序列,但對,Ghostty 也支援連字!)

以「原生平台」來說,Ghostty 在 macOS 上使用原生 GUI 工具組,在 Linux 上則使用 GTK(若可用的話加上 libadwaita)。這意味著 Ghostty 在兩個平台上看起來、感覺起來(而且實際上就是)是一款原生應用程式。這與許多僅用原生 GUI 工具組來建立視窗的終端機模擬器形成對比。

舉例來說,原生平台帶來的好處包括:Ghostty 擁有原生分頁、分割視窗、右鍵選單、選單列、Dock 整合、輸入法支援(表情符號鍵盤、聽寫等)、確認視窗、桌面通知、macOS 安全輸入模式等。

以下是 Ghostty 在 macOS 與 Linux 上的螢幕截圖(兩者皆已套用主題,但可能只需幾行設定),展示了原生平台圖形介面:

(兩張圖片皆來自 Ghostty Discord 伺服器公開展示頻道中的社群成員)


首個版本即為 1.0

Ghostty 已進行了近兩年的私人封測。在撰寫本文時,Ghostty 在 macOS 與 Linux 上約有 2,000 名測試者,其中大多數人已將 Ghostty 作為日常主要終端機模擬器使用,且未遇到問題。

由於經過了廣泛的私人封測,Ghostty 的首次公開發行版將直接是 1.0 版。這裡不會有任何 ZeroVer4

我進行如此廣泛的私人封測,動機主要出於私心:我迎來了第一個孩子,我想將時間優先留給家人,而非受外界要求開發功能或修復錯誤的壓力所左右。理論上我可以置那些雜音於不顧,但實際上我很了解自己,知道我會因此分心,精神上也會感到疲憊。

除了家庭因素外,我也懷念那個軟體準備就緒才發布的年代。我喜歡想像,如果像 CompUSA 這樣的商店依然存在,Ghostty 1.0 就會被裝盒、封膜,擺在貨架上等待購買(但同時也是免費且開源的)。

私人封測帶來的其他影響則是出乎意料或非我本意。例如,我從未打算讓 Ghostty 讓人感到排他(老實說,我根本沒預期會有這麼多人對終端機模擬器感興趣!),也從未打算透過私人封測來刻意為 Ghostty 造勢。如果你因此有不好的感受,我在此致歉。

令我驚訝的是,我因為這種做法受到了不少批評,還有許多自以為有理的人似乎認為,僅僅因為我喜歡分享自己的作品與進度,他們就理應得到些什麼。同時,我也感謝更多對我的做法表示支持與理解的人。

最後,感謝那些一直在使用 Ghostty 並提供寶貴回饋的測試者們。Ghostty 的穩定性正是仰賴這群多元的測試者,他們冒著風險使用這個對開發者而言往往至關重要的工具的早期版本,才得以實現。


宏大的願景

展望未來,Ghostty 在兩大領域有著宏大的計畫:libghostty終端機應用程式功能

libghostty 是驅動 Ghostty 的核心跨平台函式庫。它以 Zig 與 C API 的形式提供,目前可在 macOS 與 Linux 上運行。目標是讓一個龐大而多元的終端機模擬器應用程式生態系得以發展,涵蓋專用應用程式、如編輯器中的嵌入式終端機、網頁版終端機、新型終端機多工器等。

libghostty 的理念是讓開發者能專注於打造優秀應用程式的艱鉅工作,同時免費獲得快速、功能豐富且符合標準的終端機模擬功能。在許多方面,我將現今的 Ghostty 描述為 libghostty 使用端的一種「參考實作」。

對於 Ghostty 1.0 而言,libghostty 尚未被視為穩定,也未作為獨立的公開 API 提供。但 Ghostty 內部確實使用了 libghostty。Ghostty 1.0 之後的目標是讓 libghostty 作為獨立函式庫發布,並將平台支援擴展到 macOS 與 Linux 之外,特別是 WebAssembly。

除了 libghostty 之外,我也有興趣在終端機內建構更多可供應用程式利用的功能。一些想法包括提升跳脫序列的安全性、支援更現代的輸入方式(例如觸控手勢、慣性捲動、繪圖裝置等)、讓應用程式能提供原生右鍵選單等。

擴展終端機應用程式功能的目標,是讓文字介面應用程式對開發者而言更具吸引力、對使用者而言更易於使用。我相信文字介面應用程式在軟體生態系中擁有寶貴的利基,而我想協助這個平台現代化。

這些是宏大而長期的目標,用以說明我正朝著對 Ghostty 更遠大的願景努力。短期內,我計畫根據使用者回饋與我自己的想法,依循快速、功能豐富與原生平台的原始宏觀目標,持續迭代改進 Ghostty。有一些重要功能很遺憾無法趕上 1.0 版本,但將會在後續版本中推出。


財務與永續性

我不希望這成為本篇部落格文章的主要焦點,但鑑於我作為創業家的背景以及大眾對此議題的普遍關注,我將簡要談及 Ghostty 的財務與永續性層面,以避免任何混淆或揣測。

Ghostty 對我而言是一個熱情所在的專案,我目前沒有任何將該專案商業化的計畫。如同第一段所述,Ghostty 將以 MIT 授權的開源專案形式發布。

就個人層面而言,我很幸運地因過去的成功而擁有財務自由,能夠在沒有經濟壓力的情況下投入像 Ghostty 這樣的專案。我已多次公開表示,我將自己在 Ghostty 上的工作視為一種「技術慈善」;這是我回饋社群的方式,同時也能解決自己的需求並樂在其中。

同時,我確實希望 Ghostty 能在我之外長期存續,也希望未來能有機會對主要貢獻者給予報酬。為此,我與[目前仍屬非公開的]社群正在探索非營利組織架構,以協助確保 Ghostty 的長期永續性。但這是一個長期目標,並不會在 1.0 版本時就緒。


十二月見

我期待 Ghostty 1.0 在 2024 年 12 月公開發布。

Ghostty 對我而言是一個投入超過兩年的重大熱情專案,從最初在全職工作之餘偶爾進行的副專案,轉變為離職並迎來第一個孩子後的主要(但仍屬兼職性質的)重心。

Ghostty 1.0 不會是完美的,但其穩定性與功能是我引以為傲的,我認為它已準備好與全世界分享。最重要的是,我希望大家能感受到我投入 Ghostty 的用心與熱愛,並希望它能為大家的日常工作帶來樂趣(就終端機模擬器所能帶來的程度而言)。

👻

註腳

  1. 撰寫本文時,在 macOS 與 Linux 上約有 2,000 名測試者。

  2. 若想進一步了解「⚠️」的含義,請參閱原始演講文章

  3. Windows 支援預計在 1.0 版本之後推出。

  4. 諷刺的是,我發起的軟體正是 ZeroVer 的首個範例。不過,這次可不是這樣!

原文由 Mitchell Hashimoto 發布

本文章由 muse-spark-1.2-contributor 進行翻譯