Ghostty 1.0 is Coming

Mitchell Hashimoto

Ghostty 1.0 即將登場

原文由 Mitchell Hashimoto 發布,訂閱此部落格

經過近兩年的開發與封閉測試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 所謂的快速、功能豐富、原生平台究竟是什麼意思?每一項都是龐大而複雜的主題,因此我只會就每個面向點出幾個重點。

關於「快速」,我最近在 Systems Distributed 2024 上發表了一場 5 分鐘的閃電演講,題目是「Making a Terminal Emulator Really, Really Fast: Ghostty」(連結已跳至 50:15)。這場演講大致介紹了 Ghostty 在效能上投入的思考,但畢竟只是閃電演講,並未涵蓋全部。

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

關於「原生平台」,Ghostty 在 macOS 上使用原生圖形介面工具組,在 Linux 上則使用 GTK(若有提供則搭配 libadwaita)。這代表 Ghostty 在兩個平台上看起來、操作起來(而且本質上就是)一個原生應用程式。這與許多僅僅用原生工具組來開一個視窗的終端機模擬器截然不同。

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

以下是在 macOS 與 Linux 上 Ghostty 的一些螢幕截圖(兩者皆有套用主題,但大概只需幾行設定),展示其原生平台介面:

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


首個公開版本就是 1.0

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

由於經過如此廣泛的封閉測試,Ghostty 的首個公開版本將直接是 1.0 版。這裡不會搞 ZeroVer 那一套!4

我之所以進行如此長時間的封閉測試,動機其實相當自私:我迎來了第一個孩子,想把時間優先留給家人,而不是被外界要求新增功能或修復錯誤的壓力所牽制。理論上,我大可不理會那些雜音,但實際上我很了解自己,知道那會讓我分心,也會帶來不小的精神負擔。

除了家庭因素,我也懷念那個軟體「準備好才發布」的年代。我喜歡想像,如果像 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。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 對我而言是一個投入極深的熱情專案,從一開始在正職工作之餘偶爾進行的 side project,到離職並迎來第一個孩子後,成為我主要的(但依然是兼職性質的)重心。

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

👻

註腳

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

  2. 關於「⚠️」的含義,請參閱原始演講文章

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

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

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

留言