MulmoTerminal の worktree 設定引き継ぎ — 色相を 12 度ずらして見分ける

MulmoTerminal の worktree 設定引き継ぎ — 色相を 12 度ずらして見分ける

課題:worktree セルだけ灰色の無地になる

MulmoTerminal は 1 画面に多数のマス(セル)を並べ、1 マスに 1 体の AI エージェントを割り当てます。プロジェクトごとに色を付けておけば、青いセルは会社の web、緑は個人の API、といった具合に、指示を出す先を枠の色で見分けられます。

ところが、worktree を切った直後のセルだけ灰色の無地で現れます。

9 枚のうち 1 枚が灰色で、しかも今いちばん作業しているのがそのマスだった、ということが起きます。

名前やアイコンだけなら「見た目の問題」で済みますが、モデルの選択も効かなくなるので、本体では claude-opus-4-7 にしていたのに worktree ではデフォルトに戻る、といった挙動のズレまで出ます。

既存のやり方:設定を手でコピーする

worktree 側に .mulmoterminal.json を手でコピーすれば色は戻ります。ただし、

丸ごとコピーすると危ない設定が混じっているので、「全部コピーすればいい」とも言い切れません。手でやると線引きを毎回思い出すことになります。

MulmoTerminal の解決:引き継ぐ・ずらす・捨てる、を自動で分ける

worktree を切ると、プロジェクトの .mulmoterminal.json から作った専用のコピーが worktree 側の .mulmoterminal.local.json として書かれます。親に重ねて効き、git status には出ません(.gitignore に 1 行足す前提、後述)。

ポイントは、キーごとに扱いを変えていることです。

そのままコピーする:同一性

name  icon  theme  colors  fontSize  fontFamily  provider  model

同じプロジェクト、同じターミナル、同じモデルで作業するからです。icon は解決後のファイルではなく書いたままのパスで渡るので、リポジトリにコミットされたロゴなら worktree 側でも見つかります。

色相を 12 度ずつずらす:差分性

badgeColor  headerColor  headerTextColor  cellColor
cellBorderColor  dotColor  buttonColor

worktree 1 本ごとに色相だけ 12 度進めます。彩度と明度は触りません。

青系プロジェクトの worktree は、青→青緑→緑青 と少しずつずれた青系になります。「このプロジェクトだ」と分かり、かつ「どの worktree か」も分かる。並べるとグラデーションになります。

彩度と明度を触らない理由がはっきりしています。白や黒は色相を持たないので、ずらしても白や黒のままです。headerTextColor を #ffffff に設定していると、worktree 側でも白のまま。もし彩度や明度を触っていたら、3 本目あたりで文字が読めなくなります。無彩色のテキストが読めるという契約は、色相だけ動かすという制約でしか守れません。

12 度刻みは、30 本切っても一周しない範囲です。

順位は +1 だけ動かす

orderPriority = 親の順位 + 1

末尾に落ちるのではなく、切り出し元のすぐ後ろに並びます。ドック上での距離が、親子関係を表します。親が orderPriority を宣言していないときは worktree も未設定のままで、既存の並びを邪魔しません。

引き継がない:危険な設定

sound  sounds  addDirs

いずれもプロジェクトのディレクトリ内のパスを指す設定です。worktree にはその実体がないので、黙ってコピーすると壊れます。

addDirs は特に危険で、「AI が読み書きしてよい追加フォルダ」の宣言です。相対パスで書かれていると、worktree 基準で解決されて別のフォルダを黙って許可することになります。それを許すより、worktree では引き継がないほうが安全、という判断です。使いたい場合は worktree 側の .mulmoterminal.local.json に明示的に書くことになります。

逆に引き継ぐ:worktreeEnv

worktreeEnv

これは値ではなく宣言だから引き継ぎます。worktree は宣言をもとに自分専用のポート番号と DB 名を予約します。値をコピーするのではなく、宣言をコピーして各自が値を取る。この区別が付いているのが、この仕組みのきれいなところです。

詳細は MulmoTerminal の worktreeEnv に。

詳細・gotcha

.gitignore に 1 行必要

# .gitignore
.mulmoterminal.local.json

これが入っていないと worktree の git status に未追跡ファイルとして出ます。見た目が汚れるだけでは済まず、MulmoTerminal は未コミットの変更がある worktree の削除を拒否するので、掃除できない worktree になります。

書き込まない 2 つのケース

どちらも意図的です。

  1. .mulmoterminal.local.json も .mulmoterminal.json も .gitignore されていない場合 — 上記の掃除できない状態を避けるため、何も書き込みません。.gitignore を直せば次の worktree から色が付きます。
  2. worktree にすでに .mulmoterminal.local.json がある場合(自分で書いたか、前回の作成で書かれたもの) — そのファイルが答えなので上書きしません。自分で色を決めたのに次に切ったときに書き換えられる、という事故が起きません。

コピーは作成時の 1 回だけ

コピーは作成時に 1 度取られ、以後は worktree のものです。あとからプロジェクト側の色を変えても、既存の worktree は与えられた色のまま。

追いかけない理由も分かります。追いかけるとずらした色相が作り直されて、並べたグラデーションの順番が変わります。変えたいときは worktree 側のファイルを編集するか削除します。

使ってみる

MulmoTerminal 完全ガイド のインストールが終わっていれば、追加設定は 2 ステップです。

  1. 親プロジェクトの .gitignore に .mulmoterminal.local.json を 1 行足す
  2. プロジェクトに色やアイコンを設定しておく(例: .mulmoterminal.json に "headerColor": "#1E90FF" などを書く)

その状態で worktree を 1 本切ります。worktree セルの枠の色が親と同系色で、名前・アイコン・モデルが引き継がれていれば効いています。2 本、3 本と切ると、同系色のグラデーションが並びます。

やめたいときは worktree 側の .mulmoterminal.local.json を削除します。次から無地に戻ります。

まとめ

関連: MulmoTerminal 公式ガイドの設定引き継ぎ / MulmoTerminal の git worktree 隔離 / MulmoTerminal の worktreeEnv / Cursor の代替としての MulmoTerminal

この記事をシェア

関連記事

記事一覧に戻る