GTK 單一行程模式

GTK 單一行程模式可確保同一時間只有一個應用程式實例在執行。

Ghostty 在偵測到它並非從 CLI 環境啟動時, 會預設使用 GTK 單一行程模式。

GTK 專案推薦使用 GTK 單一行程模式,這也是官方 Gnome 應用程式 被期待的常見行為。當啟動第二個 Ghostty 實例時, 原實例會建立新視窗、取得焦點, 並結束第二個實例。

Tip

如果你在 Linux 上使用 Ghostty 時遇到啟動緩慢或記憶體占用高的問題, 可能是 GTK 單一行程偵測在你的環境中沒有生效,你可能需要強制啟用它。 繼續閱讀此頁以了解更多。

CLI 環境偵測

Ghostty 的預設行為是在_不_是從 CLI 環境啟動時 使用 GTK 單一行程模式。

Ghostty 有這個行為,是因為 CLI 終端機的用法很常見 (即 ghostty -e "some command"),在這些情況下, 預期的行為是啟動一個新行程並阻塞直到它結束。 單一行程模式讓我們很難做到這一點,所以只有在從非 CLI 環境啟動時,我們才想啟用單一行程模式。

並沒有一個標準 API 可以偵測應用程式是否從 非 CLI 環境啟動,因此 Ghostty 使用以下啟發式規則:

  1. 如果 TERM_PROGRAM 環境變數被設為任何非空 值,我們假設自己處於圖形終端機模擬器中,從而停用 GTK 單一行程模式。

  2. 如果有任何命令列參數傳給 Ghostty,我們假定需要 實例專屬設定,停用 GTK 單一行程模式。

強制開啟或關閉 GTK 單一行程模式

你可以透過設定 gtk-single-instance 選項來 強制開啟或關閉 GTK 單一行程模式:

gtk-single-instance = true

值為 true 時會強制 Ghostty 以單一行程模式執行。 在此模式下,如果已有 Ghostty 實例正在執行, 那麼每個新的 ghostty 行程都會在現有 實例中建立一個新視窗。

與啟動效能和記憶體使用的關係

Ghostty 是一個 GTK 應用程式。GTK 框架在 啟動時有不可避免的開銷,既表現在所花費的時間, 也表現在占用的記憶體上。Ghostty 對此無能為力。

GTK 單一行程模式為後續的 Ghostty 實例避免了這些開銷。 啟動第二個 Ghostty 實例將非常快、占用極少 記憶體,因為它只是在現有實例 中建立一個新視窗。