Ghostty 1.3.0

Ghostty 1.3.0 的發行說明,發佈於 2026 年 3 月 9 日。

Ghostty 1.3.0 是一個意義重大的發行版,包含許多呼聲最高的特性,如捲動搜尋、原生捲軸、在 shell 提示符內點擊移動游標等。它還包含數百項改進、bug 修復與效能最佳化,覆蓋所有平台。

本次發行由 180 位貢獻者 在 2,858 個提交 中完成,歷時6 個月。感謝所有為本次發行做出貢獻的貢獻者、維護者、社群管理員、翻譯者、打包者與使用者。

這些發行說明由人類 Ghostty 維護者精心而滿懷愛意地手工撰寫,包括完整的變更日誌。合計花了 16+ 小時來撰寫,請盡情享用。🥰

Ghostty is non-profit! Please support development.Almost all donations go directly to paying contributors. Learn more about how you can help.
Learn more →

安全

  • CVE-2026-26982。修復了貼上或拖放的文字中的控制字元(如 0x03(Ctrl+C))在某些 shell 環境中可用於執行任意命令的問題。需要使用者互動(複製貼上或拖放)來觸發。

亮點

PR:#9585 #9602 #9687 #9702 #9709 #9756

你現在可以用 macOS 上的 cmd+f 或 GTK 上的 ctrl+shift+f 搜尋終端機回捲。搜尋會在視口中高亮所有匹配項,並允許你用方向按鈕或 cmd+g / shift+cmd+g(macOS)或 enter / shift+enter(GTK)在它們之間導航。當然,所有這些 keybind 都是可設定的。

在 macOS 上,搜尋欄會擋路時可以拖到終端機的任意一角。搜尋還整合了標準 macOS 慣例:選單列、Find Next / Find Previous 快捷鍵與系統 find pasteboard 都按預期運作。

在 GTK 上,搜尋欄也出現在某個角落,並可拖到任意角落。

搜尋透過一個專用的搜尋執行緒實現,與終端機 I/O 並行執行。該執行緒以小時間片取得終端機鎖,在推進搜尋的同時盡量減小對 I/O 吞吐或渲染的影響。如果你不使用搜尋,或關閉了搜尋欄,搜尋執行緒退出且不消耗任何資源。

捲軸

PR:#9225 #9232

Ghostty 現在有原生捲軸。新設定 scrollbar 控制捲軸是否可見,預設 system 讓作業系統決定。

macOS 與 GTK 上的捲軸使用原生小工具與樣式,並支援你期望的所有標準互動,如拖動旋鈕、點選軌道、捲動手勢等。

在兩個平台上,我們都使用極簡的覆蓋式捲軸,使終端機網格不必為捲軸預留一個美感不佳的間隙或壟溝。捲軸以最小的樣式覆蓋在終端機內容之上,避免影響選取。

在 Shell 提示符內點擊移動游標

PR:#10455

Ghostty 現在支援 OSC 133 語義提示符規範 的 click-events與cl=line擴充。這讓你可以在活動的 shell 提示符內點選滑鼠移動游標,就像普通文字框一樣。

Fish(4.1+)與 Nushell(0.111+)原生支援該特性。對其他 shell,支援程度取決於 Ghostty 注入的 shell 整合。如果使用受支援的 shell,這會自動生效。

此外,Ghostty 現在擁有一個更完整、更準確的 OSC 133 實現,使我們長期支援的跳轉提示符或複製命令輸出特性的行為更準確。這還使處於活動提示符時的視窗大小調整行為更好。

一個有趣的細節是,我們還新增了一個超酷的除錯覆蓋層,顯示 OSC 133 區域,這對努力更好地支援它的 shell 開發者是重大助力。任何人都可以在終端檢查器中啟用。

命令完成通知

PR:#8992 #10934

Ghostty 現在可以在長時間執行的命令完成時通知你。當你啟動一個建置或測試套件並切到另一個視窗,希望在完成時收到通知時,這很有用。

三個新設定選項控制該特性:

notify-on-command-finish = unfocused
notify-on-command-finish-action = no-bell,notify
notify-on-command-finish-after = 30s

notify-on-command-finish 控制何時傳送通知:never(預設)、unfocused(僅當終端機未取得焦點時)或 always。notify-on-command-finish-action 控制如何通知,支援 bell(預設)與 notify(桌面通知),可以組合或取反(如 no-bell,notify)。notify-on-command-finish-after 設定傳送通知前命令的最短時長,預設 5 秒。

該特性用 OSC 133 跳脫序列來追蹤命令執行,因此要求啟用 shell 整合,或 shell 本身傳送 OSC 133 序列(如 Fish 或 Nushell)。

鍵表、鏈式鍵位綁定與 catch_all

PR:#9984 #9961 #9977 #10098

Ghostty 1.3 為鍵位綁定系統新增了許多功能,面向重度使用者:鍵表(key tables)、鏈式鍵位綁定(chained keybinds),以及 catch_all 特殊鍵。

鍵表支援類似 tmux 的模態鍵位綁定工作流程。鍵表是一組命名的鍵位綁定,可按需啟用或停用。當一個表處於活動狀態時,按鍵會先在該表內查找,讓你建立完全獨立的鍵位綁定模式。

表用現有 keybind 設定上的 <name>/<binding> 語法定義。例如:

keybind = resize/arrow_up=resize_split:up,10
keybind = resize/arrow_down=resize_split:down,10
keybind = resize/arrow_left=resize_split:left,10
keybind = resize/arrow_right=resize_split:right,10
keybind = resize/escape=deactivate_key_table
keybind = resize/catch_all=ignore

keybind = ctrl+a=activate_key_table:resize

在此例中,按下 ctrl+a 啟用 resize 表。表處於活動狀態時,方向鍵用於調整分屏大小,其餘鍵被忽略。按下 escape 停用該表並回到正常鍵位綁定行為。

macOS 與 GTK 上都有一個專用 UI 指示器顯示鍵表何時處於活動狀態,類似現有的按鍵序列指示器。

鏈式鍵位綁定允許你把多個動作綁定到同一個鍵。使用 chain 鍵,動作會附加到最近定義的綁定:

keybind = ctrl+shift+f=toggle_fullscreen
keybind = chain=toggle_window_decorations

按下 ctrl+shift+f 時會同時觸發兩個動作。鏈在鍵表內與鍵序列中都可以使用。

catch_all 是一個新的特殊鍵,匹配任何未顯式綁定的鍵。它可以與修飾鍵組合(ctrl+catch_all=ignore),並可用於按鍵序列中(ctrl+a>catch_all=end_key_sequence),非常容易建立不向終端機洩漏非預期輸入的自包含模態鍵位綁定集。

細粒度的工作目錄繼承控制

PR:#9158

新設定 tab-inherit-working-directory 與 split-inherit-working-directory 允許你對新視窗、分屏、獨立控制工作目錄繼承:這是呼聲最高的設定特性之一。這是呼聲最高的設定特性之一。

window-inherit-working-directory = false
tab-inherit-working-directory = true
split-inherit-working-directory = true

更長期來看,我們計劃以更通用的方式支援更好的條件設定,但這個具體用例呼聲太高,所以我們先加入這些特定選項以便更早交付。

豐富剪貼簿複製

PR:#9418 #9431

剪貼簿複製現在會在剪貼簿上設定多種內容格式(text/plain 與 text/html),支援帶格式的富文字貼上:當你貼上到富文字編輯器時,得到保留顏色與其他樣式的格式化文字。

copy_to_clipboard 綁定現在支援指定要複製的格式的參數。除混合、純文字與 HTML 格式外,綁定還支援 vt,它複製帶終端機跳脫序列的文字,貼上進另一個終端機時保留格式。

Unicode 與國際化文字渲染

PR:#8757 #10895 #9680 #10465 #9883 #10179 #10295 #10332

天城文、孟加拉文、藏文、爪哇文、蘭納文與查克瑪文等婆羅米系文字現在能正確渲染。這些文字依賴字型 shaping 來形成連字、放置組合記號、連接字元,這些現在都顯著改進。

對 Unicode 17 的更新包含完全符合 grapheme clustering 規範,使多碼點字元在選取、游標移動與儲存格寬度計算中被正確當作單一單元。

第一行顯示舊版本的渲染,第二行顯示 1.3.0 對同一文字的渲染。注意改進的連字形成、組合記號放置與字素聚群——在第一列中,選區高亮現在正確地覆蓋整個字元作為單一單元。

效能改進

PR:#9662 #9645

感謝 asciinema,我們收到了約 4GB 的公開終端機錄製資料來分析與最佳化 Ghostty 的效能。這令人興奮,因為它基於真實世界的終端機使用情況,而不僅是合成的工作負載。

利用這些資料,我們大幅改進了 I/O 處理,把 Ghostty 回放資料集中全部內容的時間從數分鐘降到幾十秒(當然,asciinema 被設定為忽略所有暫停)。這些改進在合成基準測試(如 Alacritty 的 vtebench)中同樣可見。

除 I/O 更新外,渲染器被重新架構,渲染器持有終端機鎖的時間降低了 2 到 5 倍。而且在大多數幀中,得益於改進的髒區/損傷追蹤,渲染器根本不持有鎖。這適用於 Metal 與 OpenGL。

穩定性改進

PR:#10337 #10401 #11089 #11109 #9594

Ghostty 1.3 對穩定性與健壯性做了重大投入。

本發行版修復了之前版本中 Claude Code 經常觸發的一個重大記憶體洩漏。該洩漏自 Ghostty 1.0 就存在,但在 Claude Code 開始以其龐大的使用者基頭規模化展示出觸發該問題的完美條件之前,很難觸發或很少觸發。洩漏的細節與修復見這篇專門的部落格文章。

我們還對 Ghostty 的終端機跳脫序列剖析器(#11089 )與完整 VT 流處理器(#11109 )進行了廣泛的 AFL++模糊測試。透過這一過程,我們發現並修復了約 10 個當機與潛在記憶體安全問題。這些都不是已知會造成現實問題的問題,但可能就有!作為長期目標,我們希望建置基礎設施來持續模糊測試 Ghostty。

我們建置了一個名為 Tripwire 的新測試工具(#10401 ),透過在每個 try 站點注入故障來系統性地測試 errdefer 清理路徑。這發現並修復了多個 bug,包括字型子系統中的記憶體洩漏、狀態損毀與字形快取損毀。只解決錯誤恢復路徑中的 bug,因此有助於 Ghostty 在面對意外錯誤(如 OOM、GPU 驅動問題等)時更加健壯。

在記憶體方面,我們在一些地方最佳化了他記憶體。備用螢幕記憶體改為按需分配,為從不使用它的會話在每個終端機節省數 MB(#9594 )。當然各子系統還有各種小幅改進。

AppleScript(macOS)

PR:#11208 #11251

Ghostty 現在在 macOS 上內建 AppleScript 支援,帶來強大的自動化與整合能力。透過 AppleScript,你可以檢查與控制視窗、分頁、分屏乃至單個終端機。除了簡單的建立與選單動作外,你還可以傳送文字、按鍵與滑鼠輸入。

透過指令碼可以實現的一些示例工作流程包括:自動化的終端機版面、命令廣播、按工作目錄跳轉到終端機等。

下面是一個簡短示例,目標是位於最前面 Ghostty 視窗中目前聚焦的終端機:

tell application "Ghostty"
    set term to focused terminal of selected tab of front window
    input text "pwd\n" to term
end tell

AppleScript 預設啟用,由 macOS 自動化權限(TCC)保護,因此在另一個應用程式可以控制 Ghostty 之前 macOS 會先提示。如果你完全不需要 AppleScript 支援,設定 macos-applescript = false 即可。

Important

我們把它當作 1.3 中的預覽特性。AppleScript 功能在發行前版本中得到的測試時間不如其他特性多,因此我們預計會基於使用者回饋在 1.4 中做出破壞性 API 變更並加入重要的新特性。

分屏拖放(macOS)

PR:#10090

你現在可以在 macOS 上透過拖曳來重新排列分屏。當滑鼠懸停在分屏頂部附近時,會出現一個抓握把手,可用於把分屏拖到任何其他分屏位置。只需要抓住把手並把分屏放到想要的位置;終端機內容、工作目錄與執行中的行程都會跟著移動。

你還可以把分屏拖出視窗或拖入新分頁,所有這些都與復原/重做系統整合,因此如果你不小心把分屏放錯了地方,可以輕鬆恢復原狀。

這是一個用於重排終端機版面的滑鼠驅動方案,不必關閉再重建分屏。該實現也為將來的增強(如把分屏拖入新分頁或視窗)奠定了基礎。

計劃在未來發行版中提供該特性的 GTK 實現。

不打擾的更新通知(macOS)

PR:#9116

macOS 上的更新通知現在不打擾人。如果有一個終端機視窗開著,更新通知會顯示為標題欄或視窗下角的一個小膠囊,而不是一個打斷人的快顯視窗。膠囊本身可以右鍵點選徹底隱藏。

你還可以透過命令面板中的 "Update and Restart"(#9131 )直接觸發完整的更新與重新啟動,使整個更新過程都可以由鍵盤驅動。

系統需求

系統需求相比 Ghostty 1.2 沒有變更。

macOS: Ghostty 1.3 所需的最低 macOS 版本不變(macOS 13 Ventura)。

GTK: Ghostty 1.3 要求 GTK 4.14 與 libadwaita 1.5。這與我們的 GTK/Adwaita 版本政策一致。 GTK 或 Adwaita 版本較舊的系統可以透過使用舊版 Ghostty 或社群維護的 snap 或 flatpak 套件來繞過這一要求。

Important

**這是支援 macOS 13 的最後一個版本。**從 Ghostty 1.4(以及 1.4 之前的 tip releases)開始,所需的最低 macOS 版本將是 macOS 14。Apple 在 2025 年秋季結束了 macOS 13 的安全支援,因此這個變更與 Apple 的一般支援節奏一致。

破壞性變更

以下預設行為在 1.3.0 中被修改:

  • 預設剪貼簿複製格式從 text 改為 mixed。mixed 格式會在剪貼簿上同時設定純文字與 HTML。如果這造成問題,你必須用一個特定格式重新綁定 copy_to_clipboard。#9418
  • GTK:FreeType 現在預設輕度 hinting 而不是完全 hinting,與大多數其他 GTK 應用程式的行為一致。舊行為可以透過 freetype-load-flags 設定恢復。#9253

完整變更日誌

  • 捲動搜尋現在可用於搜尋終端機回捲。在 macOS 上以 cmd+f、在 GTK 上以 ctrl+shift+f 觸發,並帶來許多新的可綁定動作。#189
  • 原生捲軸現在可用於瀏覽回捲。可以用新的 scrollbar 設定來控制。#111
  • 繼承工作目錄的設定現在可以按視窗 vs 分頁 vs 分屏分別指定。#1392
  • 鍵位綁定現在支援用 chain 鍵串聯多個動作,允許單個鍵位綁定觸發多個動作(如同時切換全螢幕與視窗裝飾)。#9961
  • 鍵位綁定現在支援鍵表:可以啟用與停用的命名鍵位綁定集,實現模態鍵位綁定工作流程。表支援一次性模式、全捕兜底、堆疊,與鍵序列及鏈式動作組合。#9963
  • 新的 catch_all 特殊鍵,用於匹配任何未顯式綁定的鍵的鍵位綁定。支援修飾鍵(ctrl+catch_all=...)與觸發序列(ctrl+a>catch_all=...)。#9977
  • 複製到剪貼簿的資料現在支援富文字,並可透過 copy_to_clipboard 綁定動作參數進行設定。#9396
  • 視窗與分頁標題現在可以透過選單、命令面板或新的鍵位綁定動作與分屏標題分開設定。#9879
  • 命令面板的會話搜尋允許你透過標題或工作目錄搜尋跳轉到任何執行中的終端機,帶分頁色彩指示器(macOS)。#9945
  • 支援 Kitty 的 click_events 擴充,在受支援的 shell 中點選提示符即可移動游標,如 Fish 4.1+ 與 Nushell 0.111+。#10536
  • 支援 OSC133 cl=line,從而使 bash 與 zsh 也得到可點選提示符。#10542
  • Ghostty 設定現在可以使用 .ghostty 擴充。#8689
  • Ghostty 現在可以在命令完成時透過 notify-on-command-finish 設定顯示通知。可以設定在多種條件下觸發,如慢命令、未聚焦的視窗等。#8991
  • 表面現在可以標記為 "readonly",它不再向 pty 傳送任何輸入事件,且在關閉前總是警告。可以透過新的鍵盤綁定、命令面板等觸發。#8432
  • 新設定 key-remap 可用於在 Ghostty 範圍內把按鍵從一個重新映射到另一個。示例:key-remap = ctrl=super。#5160
  • 新設定 clipboard-codepoint-map 接受一個映射,用於在複製到剪貼簿(確切說是寫入剪貼簿)時替換某些碼點。這可以允許複製如運算符號字元、分支繪圖字元等。#8383
  • 新設定 selection-word-chars 可用於設定決定雙擊選取詞邊界的字元。#9335
  • 新設定 mouse-reporting = false 可用於停用全部 TUI 滑鼠報告特性。#8430
  • 新設定值 scroll-to-bottom = output,在任何輸出時自動把視窗捲動到底部(預設關閉)。#9938
  • 新設定選項 split-preserve-zoom,初始只含一個選項 navigation(預設 false)。設定 navigation 後,split navigation(goto_split)執行時放大的分屏保持放大。#8458 #9089
  • 新綁定動作 goto_window:next 與 goto_window:previous,用於確定性地在視窗間導航。#8387
  • 新綁定動作 toggle_mouse_reporting 切換向 TUI 的滑鼠報告。#9282
  • 新的 end_key_sequence 綁定動作,用於顯式結束活動按鍵序列,把先前的按鍵沖刷給終端機而不編碼觸發鍵(如 ctrl+w>escape=end_key_sequence)。#10098
  • close_tab 綁定動作新增參數 right,關閉其右側的所有分頁。#9783
  • 當只有一個窗格時,resize_split 與 toggle_split_zoom 動作現在回傳 false,允許 performable: keybind 把按鍵傳給終端機應用程式。#10376
  • quick terminal 現在設定 GHOSTTY_QUICK_TERMINAL 環境變數,可以任意使用,比如用於自訂 shell 提示符。#9673
  • cursor shell 整合特性現在尊重 cursor-style-blink,當閃爍被停用時使用穩固的條而不是總是使用閃爍的條。#10643
  • 右鍵點選 URL 現在會高亮整個 URL。#9298
  • 升級到 Unicode 17。#8757
  • +list-themes 命令現在有一個寫出設定檔的鍵位綁定。#8930
  • 以 -e 啟動的命令現在把終端機標題設為 argv[0]。#9121
  • 自訂 shader 新增許多 uniforms,如游標形狀、位置、先前位置、變更後經過的時間、配色方案等,以支援更進階的 shader。#9416 #9417
  • OSC7 URI 解析現在能更好地處理更多的邊緣情況,如 MAC 位址。#9193
  • 貼上文字中的不安全控制字元現在被替換為空格,以防止惡意貼上誘騙使用者執行意外命令,與 xterm 的行為一致。#10746
  • IME 預先編輯文字現在以底線渲染而不是反色渲染,跨程式的可讀性與一致性更好。#10368
  • 改進某些低 DPI 顯示器上的字型渲染。#9432
  • 對字型度量,行高取整儲存格高度用四捨五入而不是向上取整。該變更應使高 DPI 與低 DPI 顯示器之間的結果更一致。#9648
  • 把平衡的上與左視窗內距解耦,避免對角線調整大小時的視窗抖動。#9518
  • 更新許多預設鍵位綁定以適配其他鍵盤布局。這不應影響標準美式布局。#9469
  • 忽略設定檔中的 Unicode 位元組順序標記(BOM)字元。#9490
  • 鍵盤擴充序列尊重 Unicode VS16。#9502
  • VS15/16 檢查現在正確考慮 emoji 基字元。#9679
  • 更新字素斷點演算法以完全匹配 Unicode 規範。#9680
  • 修復天城文等文字中寬字素簇的渲染問題:多個非零寬度碼點合併為一個本應占兩格的簇。#10465
  • 修復查找超連結時資料競態條件可能的當機。#9813
  • 修復選區與複製之間資料競態可能的當機。#9818
  • 修復繪製 Kitty 影像放置與放置列表更新之間的競態條件導致的當機,在執行如 Yazi 這樣的應用程式中快速循環影像時觸發。#10680
  • 修復在以非標準大小頁面修剪回捲時的重大記憶體洩漏。非標準頁面(由大量 emoji、大量超連結或 Claude Code 輸出引起)此前被錯誤地放回記憶體池而沒有取消映射。#10251
  • 修復某些邊緣情況下插入行或刪除行(IL/DL)VT 操作可能造成的渲染偽影。#10290

終端機能力

  • vt:更完整、更準確的對 OSC 133 的解析與實現。#10427
  • vt:ConEmu OSC9 現在被完整解析(子命令 1 到 12)。Ghostty GUI 只實現其中一部分,但 libghostty 可以解析全部。#3125
  • vt:配色方案變更事件現在同步上報。#5922
  • vt:modify other keys state 2 在 macOS 上不再把 option 編碼為 alt。#9406
  • vt:shift+backspace 為 Kitty Keyboard Protocol 正確編碼。#9896
  • vt:CSI 上捲(\e[nS)現在把捲出的行保留在回捲緩衝區中而不是抹除,與其他終端模擬器的行為一致。這修復了 Fish shell 的 Ctrl-L(scrollback-push)遺失歷史的問題。#9905
  • vt:重置(RIS)現在也重置進度條。#10168
  • vt:對焦點移交式點選抑制滑鼠報告,使分屏焦點變化不會向終端機應用程式發出非預期的滑鼠輸入。#11167
  • vt:解析 Kitty text sizing 協定(OSC 66),GUI 尚未實現。#10315
  • vt:解析(但不實現)iTerm2 OSC 1337 擴充。#10417
  • vt:解析(但不實現)Kitty 剪貼簿協定(OSC 5522)。#10560
  • vt:多出多得多的 tmux control mode 解析,但尚未接入 GUI。#9803 #9860
  • vt:修復 Kitty Graphics 中特製的超大影像導致的當機。#9579
  • vt:修復狂發 BEL (0x07) 導致的當機。#9800
  • vt:Ghostty terminfo 現在宣告支援 SGR dim。#11144

Shell 整合

  • nu:現在支援 SSH shell 整合。#7877
  • fish:為 Ghostty 的 fish shell 補全新增描述。#9531
  • zsh:在 zsh 中執行命令時,透過剝離控制字元而不是把它們轉換成可見表示,修復視窗標題中出現字面 \n 的問題。#10341
  • bash:bash 4.4+ 的 shell 整合不再依賴 bash-preexec,改用原生 PS0 與 PROMPT_COMMAND 實現更快、更簡單的鉤子。較舊的 Bash 版本(如 macOS 的 3.2)繼續使用 bash-preexec。#10609
  • elvish:總是報告工作目錄變更,把此能力從標題報告特性中解耦出來。#10533
  • sudo shell 整合特性現在在所有 shell 中更穩定。#9891
  • 修復 SSH 快取:當 $TMPDIR 與 $XDG_STATE_HOME 位於不同檔案系統時失敗的問題。#10364
  • 如果手動設定了 cursor-style,讓預設的 shell-integration-features 包含 no-cursor。#8681

macOS

  • macOS:每個終端機頂部現在出現一個拖曳把手,用於重排分屏、把終端機移動到新分頁或視窗等。#1525 #10090
  • macOS:新增「將 Ghostty 設為預設終端機應用程式」選項,方便地讓 Ghostty 成為開啟目錄、shell 指令稿等的預設處理程式。#10810
  • macOS:雙擊分頁現在允許內聯編輯分頁標題。按 Enter 確認,按 Escape 取消。#10963
  • macOS:自帶 command-palette-entry 的自訂命令面板條目。GTK 已從 1.2.0 起支援。#7158
  • macOS:更新通知現在顯示為終端機視窗裡一個不打擾人的膠囊,而不是快顯對話框。#9116
  • macOS:滑鼠按鈕 8/9(後退/前進)現在在終端機內正確編碼。#10381 #2425
  • macOS:新增可由 Apple Shortcuts 使用的聚焦特定終端機的 app intent。#8961
  • macOS:右鍵點選分頁設定分頁顏色。#9784
  • macOS:background-blur 現在支援使用 macOS 26 原生液態玻璃模糊的新選項。#8801
  • macOS:bell-features = audio 現在可以在 macOS 上運作。可以指定一個自訂音訊檔案在終端機鈴聲事件時播放。#11154
  • macOS:fullscreen 設定現在可用於使 Ghostty 以非原生全螢幕啟動,此外也可以原生全螢幕。#9876
  • macOS:實現 close_all_windows 綁定動作。#9552
  • macOS:新增鍵盤綁定 toggle_background_opacity。#9117
  • macOS:支援原生的 Cmd+Home/Cmd+End 快捷鍵捲動到終端機回捲的頂/底部。#10003
  • macOS:雙擊分屏分隔線時均分分屏。#9524
  • macOS:所有活動的終端機鈴被清除時,通知徽標也隨之清除。#8487
  • macOS:system 鈴設定(預設關閉)現在使用系統提示音。#9339
  • macOS:聽寫圖示現在出現在更正確的位置。#8493
  • macOS:window-width 與 window-height 現在正確考慮視窗 chrome,如分頁列。#2660
  • macOS:復原的非原生全螢幕視窗現在能正確復原。#8435
  • macOS:quick terminal 的狀態被正確復原。#9588
  • macOS:toggle_quick_terminal 不再把隱藏的視窗變為可見。#8414
  • macOS:不安全貼上確認中的文字框不再可編輯。#9400
  • macOS:關閉確認單附著到相關視窗。#9509
  • macOS:Metal 為游標儲存格載入線性化的前景色,使游標文字顯示正確。#9695
  • macOS:修復在某些系統上「復原新分頁」當機的問題。#9512
  • macOS:修復設定了 focus-follows-mouse 時命令面板不在滑鼠點選時關閉的問題。#9533
  • macOS:修復 quick-terminal-size 對人們使用不一致的問題。#9837
  • macOS:自訂應用程式圖示現在用 NSDockTilePlugIn 更可靠地更新,修復了舊 macOS 版本上的圓角問題。#9983
  • macOS:當使用帶有選單等價項的鍵盤快速鍵(如 Cmd+V、Cmd+N、Cmd+T)時,選單列現在會短暫閃爍,匹配標準的 macOS 行為。#10122
  • macOS:當儲存格寬度小於 advance 時也套用亞像素水平對齊,渲染更平滑。#9646
  • macOS:字型 shaping 現在使用字形位置來正確放置,修復了某些文字的字形在視覺上其邏輯順序被重排的渲染(如蘭納文的母音顯示在相關輔音之前)。#9883
  • macOS:修復 window-width/window-height 正確限制到可見螢幕大小、並與 window-position 正確配合。#9975
  • macOS:按下 Escape 正確隱藏分頁概覽。#9971
  • macOS:修復 Cmd-點選包含 ~ 的檔案路徑(如 ~/Documents/file.txt),在開啟之前把波浪號展開為使用者主目錄。#10863
  • macOS:修復當終端機視窗紋理超過 GPU 允許的最大大小時當機的問題:把紋理尺寸限制到裝置上限。#9972
  • macOS:最佳化 Secure Keyboard Input 覆蓋層動畫,CPU 佔用降低約 35%,並修復了之前 innerShadow() 實現造成的卡頓與凍結幀。#10903
  • macOS:修復 Vim 檔案類型偵測,把 macOS 特有的 Ghostty 設定路徑識別為 Ghostty 設定檔。#10101
  • macOS:macos-titlebar-style = tabs 的各種視窗化修復。#9596 #9597
  • macOS:深色/淺色主題重新載入的各種修復。#9360
  • macOS:各種修復,確保滑鼠游標根據狀態更準確。#9580 #8409

GTK(Linux、FreeBSD)

  • GTK:雙指左右滑動切換分頁頁面。#10575
  • GTK:鍵表與按鍵序列現在有專用 UI 顯示掛起的鍵盤輸入狀態,與 macOS 一致。#2127
  • GTK:空間式分屏導航現在在邊緣處回繞,因此向一個方向越過最後一個分屏會回繞到對側第一個分屏。#10811
  • GTK:+new-window CLI 命令現在接受 -e 與 --working-directory。#10809
  • GTK:cgroup 被改造,cgroup 現在按表面正確劃分。#10611 #2084
  • GTK:分屏變更類動作(建立、調整大小或關閉分屏等)不再讓整個視窗閃爍。#8208
  • GTK:帶自訂 window-height 或 window-width 的視窗現在正確居中。#7937
  • GTK:當剪貼簿不含文字(如影像)時,paste_from_clipboard 現在回傳 false,允許 performable: keybind 把按鍵傳給終端機應用程式。#10089
  • GTK:修復 i3 視窗邊框在全螢幕來回切換後消失的問題。#8075
  • GTK:修復 Kitty 鍵盤協定不為組合鍵(如國際鍵盤布局上 Compose 鍵輸入的重音字元)報告文字事件的問題。#10049
  • GTK:尊重 gtk-enable-primary-paste GSettings 選項,允許使用者透過 GNOME 桌面設定停用中鍵貼上。#10328
  • GTK:當 OpenGL 版本太舊時記錄警告,而不是無提示地當機。#9586
  • GTK:FreeType 旗標預設輕度 hinting 而非完全 hinting,以匹配大多數其他 GTK 應用程式的行為。#9253
  • GTK:XKB 映射在 Linux 上正常運作。#9454
  • GTK:如果 4.2 可用,在 CSS 中使用媒體查詢與 prefers-color-scheme。#9520

本地化

Ghostty 1.3 新增對 6 門新語言的支援:

  • 克羅埃西亞語
  • 哈薩克語
  • 拉脫維亞語
  • 立陶宛語
  • 西班牙語(西班牙口語)
  • 越南語

本地化由志工貢獻者維護。如果你想協助把 Ghostty 本地化為你的語言,請在 GitHub 儲存庫上發起討論。感謝所有為 Ghostty 本地化做出貢獻的志工!

面向套件維護者的變更

  • Ghostty 現在需要 Zig 0.15 來建置。#8372

Libghostty

雖然與 Ghostty 1.3 發行不是直接相關,1.3 開發週期的目標之一就是開始認真地聚焦 libghostty,所以我想在這裡做個進展更新。

在 1.3 開發週期中,libghostty 被成功抽離出來,現在作為一個獨立的 Zig 模組可用。該 Zig 模組功能齊全,與 Ghostty 幾乎共用所有程式碼。與此同時,還有一個進行中的 C API。Ghostty 儲存庫內有一組 Zig 與 C 的示例。

我們還沒有準備好為這兩個模組打版本號發行,但數十個免費與商業專案已經在使用 libghostty,我很興奮!如果你有興趣,我們的 Discord 有一個 libghostty 頻道。

Ghostty 開發團隊決定把 Ghostty GUI 與 libghostty 的發行週期分開:libghostty 將擁有自己的版本號與發行計劃,獨立於 Ghostty 桌面應用程式。這允許我們為函式庫與桌面應用程式保持不同的開發節奏,它們有著不同的使用者群與穩定性要求。

我們還不確定何時會打出首個 libghostty 發行,但 Zig 模組與 C API 的工作都在繼續,我們希望很快有發行!

財務更新

在 1.3 開發週期中,Ghostty 正式成為非營利專案。

這很重要,因為它提供了可執行的保證:Ghostty 不能被出售、轉向或為牟取商業利益而被改造。非營利結構保護採納並貢獻 Ghostty 的人與社群,確保專案由一個使命驅動、把公共利益置於私人利潤之上的實體來管理。關於該決定動機的更多資訊見最初的公告。

我們現在已正式簽署 5 份貢獻者合同,補償那些參與專案並持續展示高品質工作的個人。這些合同涵蓋社群管理、圖形工作、Unicode 相容性、GTK 以及 Discord/GitHub 整合。這些合同合計承諾近 300 小時的計費工作,我們很高興為貢獻者提供付費機會來繼續他們在 Ghostty 上的工作。

如果你願意支援 Ghostty,請造訪我們的贊助頁。

路線圖

由於捲動搜尋與原生捲軸等呼聲最高的特性得以實現,我認為 Ghostty 1.3 是一個出色的發行版,兌現了讓 Ghostty 成為「現有最佳終端機模擬器」的長期目標。

當然,"最佳"始終是主觀的,但重點是:Ghostty 1.3 具備使用者期望任何成熟的終端模擬器具備的所有主流特性,並以高度打磨與效能交付它們。我們當然會繼續改進 Ghostty,但這是專案發展的一個重要里程碑。

短期重點將放在穩定化並打出 libghostty 發行上。數十個專案已經在使用 libghostty,我相信 libghostty 最終會比 Ghostty 桌面應用程式本身被更廣泛地使用並更具影響力,所以這是專案重要的下一步。

還有許多非營利開發工作要做,比如建立企業贊助計劃、為贊助專案提供更實質的回報、更好地宣傳 Ghostty 如何使用資金等。

Ghostty 1.4 將繼續迭代並改進桌面應用程式。我不想承諾任何具體特性,但我們正努力使 Ghostty 可腳本化、啟用真正的 Tmux control mode、圖形化設定等。

回應一個常見的請求:對 Microsoft Windows 的支援仍然沒有計劃。這仍在長期路線圖中,但我認為聚焦一個有能力且強大的 libghostty,從長期看反而能帶來更好的 Windows 支援。libghostty 本身已經支援 Windows。

Ghostty 1.4 將繼續 6 個月的發行週期,計劃在 9 月。對想要更頻繁更新的使用者,我們推薦在 macOS 使用 tip 發行通道,或在 Linux 上頻繁地從原始碼建置。