Ratty:透過終端機中的內嵌 3D 圖形打破文字障礙

數十年來,終端機一直是文字介面的避風港——一個由字元組成的僵化網格,其中表示複雜數據的唯一方法是透過 ASCII art 或外部視窗。雖然現代終端機模擬器已經引入了對 emoji 和基本圖像協定的支援,但「文字」與「圖形」之間的界限仍然非常明顯。

Ratty 是一款由 GPU 渲染的終端機模擬器,它大膽地透過在終端機串流中直接引入內嵌 3D 圖形來模糊這條界線。透過將命令列視為系統互動與圖形渲染的直接介面,Ratty 將終端機從一個簡單的文字輸出裝置轉變為一個動態、多維度的畫布。

靈感來源:從 TempleOS 到現代 GPU 渲染

Ratty 不僅僅是一項技術練習;它是我們看待 REPL (Read-Eval-Print Loop) 體驗的一種哲學轉變。該專案從 TempleOS 汲取了大量靈感,這是一個以其獨特的色彩、圖形精靈 (sprites) 以及命令列作為所有事物主要介面的作業系統而聞名的作業系統。

正如創作者 Orhun Parmaksız 在專案文件中所說:

"I enjoy tools like Chafa, imgcat, etc but something always feels a little clunky about the separation between text and images. Paradoxically having text and non-text all jumbled up like this feels better somehow."

透過利用 GPU 加速,Ratty 允許在標準終端機文字旁邊渲染 3D 物件——包括該專案的吉祥物,一隻旋轉的老鼠——從而創造出一種「好萊塢 OS」的美學,感覺像是 80 年代的 Silicon Graphics 工作站與復古家用電腦的結合。

技術影響與圖形協定

Ratty 最顯著的面向之一是其圖形處理方式。雖然其他終端機嘗試使用 Sixel 或 Kitty Graphics Protocol 等協定來解決「終端機中的圖像」問題,但 Ratty 透過整合 3D 功能進一步推進。

這引發了開發者之間關於終端機協定演進的更廣泛討論。該專案強調了對更強大標準的需求,例如提議中的 "glyph protocol",以更原生化地處理非文字數據。然而,3D 圖形的整合帶來了新的技術挑戰,最顯著的是同步問題。

一些社群成員指出,如果沒有適當的 vsync 實作,終端機模擬器可能會在應用程式仍在寫入時讀取框架緩衝區 (framebuffer),這可能導致視覺偽影 (visual artifacts)。這強調了從靜態字元網格轉向高刷新率圖形環境的複雜性。

辯論:創新 vs. 放縱

與任何挑戰長期慣例的專案一樣,Ratty 引起了意見分歧。對某些人來說,它是一個邁向更強大介面的遠見卓識之舉:

  • 數據科學演進: 有人認為終端機正在自然地向數據科學筆記本 (notebooks) 的模型演進,其中程式碼與豐富的視覺輸出並存。
  • VR 潛力: 對於在 VR 環境中使用此類終端機的可能性感到興奮,在 VR 中,3D 深度可以用於分層資訊或建立沉浸式開發空間。
  • 打破 1980 年代的模擬: 支持者認為,當現代硬體可以處理更多內容時,不再有理由去模擬 40 年前的僅限文字的限制。

相反地,批評者將該專案視為「放縱」或「無意義的專案」。有人認為終端機的抽象層存在是有原因的——簡單性與通用性——而加入 3D 圖形是一種對核心功能的干擾。一位評論者指出,雖然視覺效果「極其瘋狂」,但對於一般開發者來說,實際的應用場景仍然難以捉摸。

結論:CLI 的未來

無論 Ratty 是否成為專業開發的標準,或是僅作為一件迷人的「數位藝術品」,它都迫使我們提出一個必要的問題:為什麼我們仍然堅持現有的終端機抽象層?

透過證明 3D 圖形可以與 bash prompt 並存,Ratty 建議了一個未來,其中終端機不再僅僅是與核心 (kernel) 溝通的方式,而是一個功能齊全的環境,能夠在任何維度渲染任何數據。這是一個「跳出框架」思考的大膽實驗,提醒我們我們每天使用的工具並非一成不變。

Sources