我們會閱讀每一則回饋,並非常重視您的意見。

欲查看所有可用的限定詞,請參考我們的文件。

載入時發生錯誤,請重新整理此頁面。

Ghostling 是一個示範專案,旨在展示基於 libghostty C API 的最小功能終端模擬器,整個程式碼只用一個 C 檔案實現。

此範例使用 Raylib 來處理視窗與繪圖。它是單執行緒的(儘管 libghostty-vt 支援多執行緒),並採用 2D 圖形渲染器,而非像主要的 Ghostty GUI 那樣直接使用 GPU 渲染。這是為了展示 libghostty 的彈性,以及它如何在多種情境中被使用。

Ghostling 終端模擬器並非設計為功能完整、日常使用的終端。它是一個基於 libghostty 的最小可行終端。此外,因為這基本上是個示範,我沒有仔細審核每個細節是否完全正確,而且這是 C 語言,請自行注意風險!

Libghostty 是從 Ghostty 核心抽取出來的可嵌入函式庫,提供 C 與 Zig API,讓任何應用程式都能嵌入正確且快速的終端模擬功能。

Ghostling 使用 libghostty-vt,一個零依賴(甚至不依賴 libc)的函式庫,負責 VT 序列解析、終端狀態管理(游標位置、樣式、文字重排、回滾等)以及渲染器狀態管理。它不包含任何繪圖或視窗程式碼;這部分由使用者(此例為 Ghostling)自行提供。核心邏輯直接從 Ghostty 抽取,繼承了其所有實務優勢:優秀、準確且完整的終端模擬支援,SIMD 優化的解析,領先的 Unicode 支援,高度優化的記憶體使用,以及經過嚴格測試與模糊測試的穩健程式碼庫,這些都由 Ghostty GUI 每日數百萬活躍用戶驗證。

儘管 Ghostling 是 libghostty 之上的一個極簡薄層,但您仍能享有以下功能:

這些功能目前 libghostty-vt 尚未完全暴露,但未來會加入:

以下功能可能可用,但尚未在 Ghostling 本身測試或實作:

此清單尚不完整,我們會持續補充。

libghostty 專注於核心終端模擬功能。因此,您不會在此看到由終端模擬層之上的 GUI 提供的功能,例如:

這些功能預期由 libghostty 的使用者自行實作,若需要的話。此範例為保持極簡,並未實作這些功能。

此示範存在一些已知問題:

除錯版本非常慢,因為 Ghostty 包含許多額外的安全與正確性檢查。請勿用除錯版本進行效能測試。

初次設定完成後,只需執行建置步驟即可:

libghostty-vt 擁有完整且經過驗證的 Zig API。Ghostty GUI 本身即使用此 API,雖然較複雜,但是一個良好的使用範例。不過此示範主要展示最小的 C API,因為 C 語言更廣泛被各種開發者與語言生態系統使用。

libghostty-vt 提供 C API,且可實現零依賴,因此幾乎可用於任何語言的極簡綁定。我尚不確定 Ghostty 專案是否會維護除 C 與 Zig 外的官方綁定,但希望社群能創建並維護多種語言的綁定!

libghostty 對渲染器或 GUI 框架沒有偏好;它甚至支援獨立的 WASM,適用於瀏覽器及其他環境。

libghostty 提供高效能的渲染狀態 API,只追蹤建立渲染器所需的狀態。這是 Ghostty GUI 用於 Metal 與 OpenGL 渲染的相同 API,本專案則用於 Raylib 2D 圖形 API。您可以在此基礎上疊加任何渲染器!

我需要選擇一個方案。其實任何建置系統與函式庫都可用。CMake 廣泛使用且支援良好,Raylib 是一個簡單優雅的視窗與 2D 繪圖函式庫,容易設定。別被這些細節困擾!

這是一個基於 libghostty C API 的最小可行終端模擬器。Ex minimo, infinita nascuntur. 👻🐣