Kaku リポジトリ解説
WezTerm fork のコードベース構成・ワークスペース・クレート役割
Kaku は WezTerm の fork。AI コーディング向けに「ゼロコンフィグ・軽量・即起動」を目指したターミナル。Rust の Cargo ワークスペースで、kaku(CLI)と kaku-gui(GUI)の 2 本のバイナリ、および config(Lua 設定)・mux(マルチプレクサ)・多数の wezterm-* クレートで構成される。
ルート Cargo.toml の [workspace] members に含まれる主なクレート:
| パス | 役割 |
|---|---|
kaku | CLI バイナリ。clap でサブコマンド(ai, config, doctor, update, cli 等)、mux・wezterm-client・config に依存。 |
kaku-gui | GUI バイナリ。ウィンドウ・タブ・ペイン描画、macOS ネイティブ連携。 |
config | Lua 設定読み込み(mlua, wezterm-config-derive)。~/.config/kaku/kaku.lua を WezTerm API 互換で解釈。 |
mux | マルチプレクサ。タブ・ペイン・PTY 管理。wezterm-mux-server-impl 等と連携。 |
crates/bidi | 双方向テキスト(Bidi)処理。 |
crates/wezterm-* | wezterm-cell, wezterm-escape-parser, wezterm-surface, wezterm-ssh, wezterm-open-url, wezterm-uds, wezterm-dynamic 等。ターミナル描画・入力・通信の基盤。 |
deps/cairo | Cairo バインディング(描画)。 |
このほか term・termwiz・window・lua-api-crates などサブツリーがあり、WezTerm 由来のターミナルエミュレーションと Lua API を提供する。
kaku/Cargo.toml の主な依存: config, mux, wezterm-client, wezterm-gui-subcommands, clap, ratatui, env-bootstrap, portable-pty, termwiz。TUI(kaku config, kaku ai)は ratatui で実装されている。
Lua 5.4(mlua, vendored)で kaku.lua を読み、WezTerm 互換の config テーブルを構築。フォント・テーマ・キーバインド・color_overrides 等を扱う。notify で設定ファイル変更の監視が可能。
wezterm-cell(セル表現), wezterm-escape-parser(エスケープシーケンス), wezterm-surface(描画サーフェス), pty, bidi, codec などがターミナル核心を担う。Kaku 固有の最適化(strip, lazy load)はビルドプロファイルで制御される。
通常のリリースは cargo build --release。より小さいバイナリ用に release-opt が定義されている:
[profile.release-opt]
inherits = "release"
opt-level = "z" # サイズ最適化
lto = "fat"
codegen-units = 1
strip = "symbols"
panic = "abort"
使用例: cargo build --profile release-opt -p kaku -p kaku-gui。実行体・リソースの削減により、公式の「約 40% 小型・即起動」を実現している。