課題:worktree セルだけ灰色の無地になる
MulmoTerminal は 1 画面に多数のマス(セル)を並べ、1 マスに 1 体の AI エージェントを割り当てます。プロジェクトごとに色を付けておけば、青いセルは会社の web、緑は個人の API、といった具合に、指示を出す先を枠の色で見分けられます。
ところが、worktree を切った直後のセルだけ灰色の無地で現れます。
- プロジェクトの設定は本体リポジトリの
.mulmoterminal.jsonに置いてある - 新しく切った worktree にはそのファイルが無い
- だから名前も色もアイコンもモデルも、どれも効かない
9 枚のうち 1 枚が灰色で、しかも今いちばん作業しているのがそのマスだった、ということが起きます。
名前やアイコンだけなら「見た目の問題」で済みますが、モデルの選択も効かなくなるので、本体では claude-opus-4-7 にしていたのに worktree ではデフォルトに戻る、といった挙動のズレまで出ます。
既存のやり方:設定を手でコピーする
worktree 側に .mulmoterminal.json を手でコピーすれば色は戻ります。ただし、
- 本体の設定を変えるたびに全 worktree にコピーし直す
- worktree ごとに「どのツリーか」を区別する色にしたいなら、色を手で少しずつずらす
addDirs(AI が読み書きしてよい追加フォルダ)に相対パスが入っていると、worktree 側で別のフォルダを指すsound(通知音のファイルパス)は worktree 側に実体がないので再生に失敗する
丸ごとコピーすると危ない設定が混じっているので、「全部コピーすればいい」とも言い切れません。手でやると線引きを毎回思い出すことになります。
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 つのケース
どちらも意図的です。
.mulmoterminal.local.jsonも.mulmoterminal.jsonも.gitignoreされていない場合 — 上記の掃除できない状態を避けるため、何も書き込みません。.gitignoreを直せば次の worktree から色が付きます。- worktree にすでに
.mulmoterminal.local.jsonがある場合(自分で書いたか、前回の作成で書かれたもの) — そのファイルが答えなので上書きしません。自分で色を決めたのに次に切ったときに書き換えられる、という事故が起きません。
コピーは作成時の 1 回だけ
コピーは作成時に 1 度取られ、以後は worktree のものです。あとからプロジェクト側の色を変えても、既存の worktree は与えられた色のまま。
追いかけない理由も分かります。追いかけるとずらした色相が作り直されて、並べたグラデーションの順番が変わります。変えたいときは worktree 側のファイルを編集するか削除します。
使ってみる
MulmoTerminal 完全ガイド のインストールが終わっていれば、追加設定は 2 ステップです。
- 親プロジェクトの
.gitignoreに.mulmoterminal.local.jsonを 1 行足す - プロジェクトに色やアイコンを設定しておく(例:
.mulmoterminal.jsonに"headerColor": "#1E90FF"などを書く)
その状態で worktree を 1 本切ります。worktree セルの枠の色が親と同系色で、名前・アイコン・モデルが引き継がれていれば効いています。2 本、3 本と切ると、同系色のグラデーションが並びます。
やめたいときは worktree 側の .mulmoterminal.local.json を削除します。次から無地に戻ります。
まとめ
- worktree セルだけ灰色の無地になる問題は、親の
.mulmoterminal.jsonが worktree 側にないから起きる - MulmoTerminal は
.mulmoterminal.local.jsonを自動生成し、親の設定の上に重ねる - 枠の色は色相だけ 12 度ずつずらす。彩度と明度を触らないのは、無彩色の文字色を読めるまま保つため
addDirsと音は、パスが worktree で意味を変えるので引き継がないworktreeEnvは値ではなく宣言なので引き継ぐ。各ツリーが自分でポートと DB 名を取る.gitignoreに.mulmoterminal.local.jsonを 1 行足せば、残りは自動
関連: MulmoTerminal 公式ガイドの設定引き継ぎ / MulmoTerminal の git worktree 隔離 / MulmoTerminal の worktreeEnv / Cursor の代替としての MulmoTerminal




