Whetuu: Zigで書かれたゼロコンフィグのクロスシェルプロンプト

Whetuu: Zigで書かれたゼロコンフィグのクロスシェルプロンプト

Whetuu は、ゼロコンフィギュレーションで、クロスシェル対応のプロンプトで、Zig で書かれ、高性能と最小限のセットアップを実現しています。Git のステータス、ツールチェーンのバージョン、コマンド実行時間を追跡する動的プロンプトを提供し、上矢印で起動するディレクトリ認識型履歴ピッカーを統合しています。

高性能プロンプトレンダリング

Whetuu は標準環境で約 2 ms でレンダリングされ、シェルの応答性を保ちます。この速度を実現するために、ディスクを読み取るすべてのモジュールは std.Io を介して並行実行され、合計時間はすべてのプローブの合計ではなく、最も遅い単一プローブに限定されます。

13世代 i9-13900H (ReleaseFast) におけるパフォーマンスベンチマークは次のとおりです:

  • リポジトリなし、ツールチェーンなし: 2.3 ms
  • Zig リポジトリ (35 ファイル): 3.0 ms
  • モノレポ (8,259 ファイル): 20.2 ms

遅いリポジトリがシェルをハングさせるのを防ぐため、Whetuu は厳格なタイムアウトを実装しています。Git のサブプロセスは 250 ms、ツールチェーンのプローブは 200 ms に制限されます。これらの制限を超えると、Whetuu は単に該当するセグメントをプロンプトから除外します。

ディレクトリ認識型履歴ピッカーの統合

Whetuu は標準の上矢印履歴動作をインタラクティブなピッカーに置き換えます。このピッカーはデフォルトで現在のディレクトリにスコープされ、ディレクトリ固有のコマンドが見つからない場合にのみグローバル履歴にフォールバックします。

履歴ピッカーの主な機能は次のとおりです:

  • クリーン履歴: 正常に終了したコマンドのみが記録され、タイプミスがリストを汚染するのを防ぎます。
  • プライバシー: スペースで始まるコマンドは記録されません。
  • 構文ハイライト: ターミナルテーマに基づいてコマンドがハイライトされ、長いコマンドは中間が切り詰められ、ユニークなプレフィックスとサフィックスが保持されます。
  • ナビゲーション: ユーザーは入力(大文字小文字を区別しない)でフィルタリングでき、Ctrl+G でディレクトリ履歴とグローバル履歴を切り替え、Tab で選択を編集し、Enter で実行できます。

動的プロンプトモジュール

プロンプトは、現在のコンテキストに関連する場合にのみセグメントを表示します:

  • User/Host: SSH 上または root で実行中の場合は太字緑で表示され、root アクセスは警告として太字赤でハイライトされます。
  • Directory: 現在のディレクトリを表示し、$HOME~ に縮約され、パスを固定し、可能な限り多くの末尾ディレクトリを収めます。
  • Git Branch: ブランチ名または (detached) をマゼンタで表示します。
  • Git State: リベース、マージ、チェリーピックなどのアクティブな操作を黄色で示します。これは .git から直接読み取られ、サブプロセスは生成されません。
  • Git Status: コンフリクト、スタッシュ、ステージ済み、変更済み、未追跡、ahead/behind の状態を単一の角括弧でまとめます。
  • Language Detection: プロジェクトマニフェスト、ソースファイル拡張子、インフラマーカーを通じて検出された 39 種類の言語やツールのロゴとバージョンを表示します。
  • Language Branding: プロンプト文字(星)は検出された言語のブランドカラーを採用します。
  • Command Duration: 前のコマンドが 2 秒以上実行された場合、タイマーグリフと経過時間が表示されます。

セキュリティとデータプライバシー

Whetuu は「何もマシンから外部へ出さない」哲学で設計されています。ネットワークソケット、HTTP クライアント、テレメトリ、アップデートチェックは一切含まれていません。

データ管理は以下の原則に従います:

  • ストレージ: Whetuu は 2 つのファイルのみを書き込みます: 履歴ストア(モード 600)と ~/.cache/whetuu/versions にあるツールチェーンバージョンキャッシュです。どちらも XDG ベースディレクトリ仕様に従います。
  • シェル統合: インストーラはアクティブシェル($SHELL)の設定に 2 行だけ追記し、他には何もしません。
  • 入力安全性: ブランチ名やディレクトリ内の制御バイトは ? に変換され、ターミナルエスケープシーケンス攻撃を防止します。
  • 実行: Whetuu は git とツールチェーンのプローブを固定引数のサブプロセスとして実行し、ユーザー入力がコマンドとして解釈されることはありません。

インストールと要件

Whetuu は Git ブランチ、言語ロゴ、プロンプト文字に使用されるグリフを表示するために Nerd Font が必要です。Nerd Font がない場合、これらの要素は空白のボックスとして表示されます。

Installation is handled via a single command:

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

手動で設定したいユーザーは、インストーラを WHETUU_NO_MODIFY=1 として実行すると、ドットファイルを変更せずに必要な設定行を出力します。

コミュニティのフィードバック

パフォーマンスと履歴ピッカーが称賛される一方で、ツールの意見的な性質やインストール方法について懸念を示すユーザーもいました:

"プロンプトにシェル履歴も処理させたくありません… $HOME にディレクトリを作るのはやめてください。"

"bash や sh に直接パイプするのはやめてください。エディタでインストールスクリプトを読み、実行方法を伝えるように強制してください。"

語源に関して、あるユーザーはこの名前がマオリ語に由来し、"wh" は "f" の音(FEH-too)で発音され、"ū" のマクロンは長母音を示すと指摘しました。

Sources