Whetuu:零設定跨 Shell 提示字元(使用 Zig 編寫)

Whetuu:零設定跨 Shell 提示字元(使用 Zig 編寫)

Whetuu 是一個零設定、跨 Shell 的提示字元,使用 Zig 編寫,旨在提供高效能且最小化設定需求。它提供動態提示,追蹤 Git 狀態、工具鏈版本與指令執行時間,並整合一個由上方向鍵觸發的目錄感知歷史挑選器。

高效能提示字元渲染

Whetuu 在標準環境下的渲染時間約為 2 毫秒,確保 Shell 保持回應迅速。為了達成此速度,所有讀取磁碟的模組皆透過 std.Io 並行執行,意味著總渲染時間受限於最慢的單一探測,而非所有探測的總和。

在第 13 代 i9-13900H(ReleaseFast)上的效能基準顯示:

  • 無儲存庫,無工具鏈: 2.3 ms
  • Zig 儲存庫(35 檔案): 3.0 ms
  • 單一儲存庫(8,259 檔案): 20.2 ms

為防止緩慢的儲存庫卡住 Shell,Whetuu 實作了嚴格的逾時機制。Git 子行程的上限為 250 毫秒,工具鏈探測的上限為 200 毫秒。若某個程序超過此限制,Whetuu 只會直接省略提示字元中對應的段落。

整合目錄感知歷史挑選器

Whetuu 用互動式挑選器取代標準的上方向鍵歷史行為。此挑選器預設僅限於目前目錄,僅在找不到目錄特定指令時才回退至全域歷史。

歷史挑選器的主要功能包括:

  • 乾淨的歷史: 僅記錄正常結束的指令,避免錯字佔滿清單。
  • 隱私保護: 以空格開頭的指令永不被記錄。
  • 語法高亮: 指令會依終端主題著色,過長的指令會在中間截斷,以保留唯一的前綴與後綴。
  • 導覽: 使用者可透過輸入(不分大小寫)過濾,使用 Ctrl+G 在目錄與全域歷史間切換,並使用 Tab 編輯選取項目,最後以 Enter 執行。

動態提示字元模組

提示字元僅在與當前情境相關時顯示相應段落:

  • 使用者/主機: 透過 SSH 時以粗體綠色顯示,若為 root 則以粗體紅色警示。
  • 目錄: 顯示目前目錄,將 $HOME 縮寫為 ~,固定路徑起點並盡可能容納更多後續目錄。
  • Git 分支: 以洋紅色顯示分支名稱或 (detached)
  • Git 狀態: 以黃色顯示正在進行的操作,如 rebase、merge 或 cherry-pick。此資訊直接從 .git 讀取,無需產生子行程。
  • Git 狀態摘要: 將衝突、暫存、已暫存、已修改、未追蹤以及 ahead/behind 狀態彙總於單一方括號內。
  • 語言偵測: 顯示 39 種不同語言與工具的圖示與版本,透過專案清單、來源檔案副檔名或基礎標記偵測。
  • 語言品牌化: 提示字元(星號)的顏色會採用偵測到的語言品牌色。
  • 指令執行時間: 若前一指令執行時間超過兩秒,會顯示計時圖示與經過時間。

安全性與資料隱私

Whetuu 採用「資料不離開你的機器」的理念設計。它不包含任何網路 socket、HTTP 客戶端、遙測或更新檢查。

資料管理遵循以下原則:

  • 儲存: Whetuu 僅寫入兩個檔案:歷史儲存(模式 600)與位於 ~/.cache/whetuu/versions 的工具鏈版本快取。兩者皆遵循 XDG 基礎目錄規範。
  • Shell 整合: 安裝程式會在使用中的 Shell($SHELL)設定檔中追加兩行,除此之外不做其他變更。
  • 輸入安全: 分支名稱或目錄中的控制位元會被轉換為 ?,以防止終端跳脫序列攻擊。
  • 執行: Whetuu 以固定參數執行 git 與工具鏈探測的子行程,確保使用者輸入永不被當作指令執行。

安裝與需求

Whetuu 需要 Nerd Font 來顯示 Git 分支、語言圖示與提示字元所使用的字形。若未安裝 Nerd Font,這些元素會顯示為空白方框。

安裝透過單一指令完成:

curl --proto '=https' --tlsv1.2 -fsSL https://yamafaktory.github.io/whetuu/install.sh | sh

若使用者偏好手動設定,可使用 WHETUU_NO_MODIFY=1 執行安裝程式,讓其僅列印所需的設定行,而不會修改點檔。

社群回饋

雖然因效能與歷史挑選器受到讚揚,但仍有使用者對此工具的主觀性與安裝方式表示關切:

"我不希望我的提示字元也處理 Shell 歷史… 請不要在我的 $HOME 中建立目錄。"

其他使用者質疑直接將腳本透過管道送入 Shell 的安裝方式,這在安全社群中是一個常見的爭議點:

"請不要再把腳本直接 pipe 到 bash 或 sh。應強迫使用者使用編輯器,閱讀安裝腳本,並告訴他們如何執行。"

關於詞源,有使用者指出此名稱來源於毛利語,其中「wh」發音為「f」音(FEH-too),而「ū」上的長音符號表示元音為長音。

SUMMARY:

Whetuu 是一款高效能、零設定的跨 Shell 提示字元,使用 Zig 編寫,具備整合的歷史挑選器與針對 39 種語言的自動工具鏈偵測功能。

TITLE:

Whetuu:零設定跨 Shell 提示字元(使用 Zig 編寫)

Sources