Kaku リポジトリ解説

WezTerm fork のコードベース構成・ワークスペース・クレート役割

1 — 概要

KakuWezTerm の fork。AI コーディング向けに「ゼロコンフィグ・軽量・即起動」を目指したターミナル。Rust の Cargo ワークスペースで、kaku(CLI)と kaku-gui(GUI)の 2 本のバイナリ、および config(Lua 設定)・mux(マルチプレクサ)・多数の wezterm-* クレートで構成される。

本ページはリポジトリ・開発者向けの構成解説。
2 — ワークスペース構成

ルート Cargo.toml[workspace] members に含まれる主なクレート:

パス役割
kakuCLI バイナリ。clap でサブコマンド(ai, config, doctor, update, cli 等)、mux・wezterm-client・config に依存。
kaku-guiGUI バイナリ。ウィンドウ・タブ・ペイン描画、macOS ネイティブ連携。
configLua 設定読み込み(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/cairoCairo バインディング(描画)。

このほか termtermwizwindowlua-api-crates などサブツリーがあり、WezTerm 由来のターミナルエミュレーションと Lua API を提供する。

3 — 主要クレート

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)はビルドプロファイルで制御される。

4 — ビルド

通常のリリースは 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% 小型・即起動」を実現している。