課題:他人の OSS に、自分の開発ツール用の設定ファイルを足したくない
よく使う OSS ライブラリにバグ修正を出すついでに気づきます。MulmoTerminal のグリッドで、このプロジェクトのマスだけ色が付いていません。
自分がよく開くプロジェクトなので、色を付けたい。.mulmoterminal.json を 1 枚置けば付きます。
そこで手が止まります。.mulmoterminal.json という特定アプリ用の設定ファイルを、他人のプロジェクトに足す PR は出しにくい。「この開発ツールの設定を入れてください」は、メンテナがその道具を使っていなければ「何のファイルか分かりません」で終わります。
書店が、本の裏表紙に自社用のバーコードを足してくれと出版社に頼むのと同じ立場です。30 社から頼まれれば裏表紙が埋まりますし、そもそも出版社にとってはどの書店の情報でもありません。
自分のフォルダにだけ置けばいい、ではある
実際には、自分の手元に .mulmoterminal.json を置くだけで動きます。コミットする必要も、PR を出す必要もありません。
ただそれだと、
- 取ってき直したら消える
- 別のパソコンでは付かない
- worktree を切ったときに引き継がれないこともある
- そして、同じプロジェクトを開く他の人にも役立つ情報を、自分だけが持っている
というもったいなさが残ります。
どのツールからも読める形にする
repo.json は、どのツールからも読めるプロジェクトのメタデータ規格です。リポジトリの一番上に置く小さな 1 ファイルで、特定アプリの名前は付いていません。
{
"name": "diffusion-lab",
"description": "Training and evaluation for latent diffusion models",
"icon": "docs/logo.png",
"color": "#7c3aed"
}
名前、説明、ロゴ、ブランド色 — これはどの開発ツールにとっても意味のある情報です。MulmoTerminal も読みますが、他のツールが将来読んでも困る内容ではありません。
本の裏表紙の ISBN と同じ位置にあります。書店も図書館も取次も古書店も、全員が同じ 1 つの番号を自分の用途で読みます。誰のものでもないから、貼ってもらえます。
色を 1 つ書くと、7 色になる
もう一つ、規格として賢い部分です。
.mulmoterminal.json の色設定では色を 7 つ個別に書けました(badgeColor / headerColor / headerTextColor / cellColor / cellBorderColor / dotColor / buttonColor)。repo.json では color 1 つです。
- ヘッダーはその色そのもの
- バッジ・枠・ステータスドット・ボタン・セル本体は、その色相から導出
- ヘッダーの文字色は、コントラストから自動で導出(書かない)
ブランド色は普通 1 色しか決まっていないので、7 つ書かせる規格は過剰です。1 つ書けば済むようにしてあります。
セル本体の色だけ別に指定したいときは color.background で直接書けます。
このアプリ固有のものは、名前空間に入れる
規格に無いキーを書きたいときは extensions の下に入れます。
{
"name": "diffusion-lab",
"color": "#7c3aed",
"extensions": {
"mulmoterminal": { "theme": "nord", "orderPriority": 30 }
}
}
MulmoTerminal の theme や orderPriority、sound などはここです。配色の名前やグリッド内の並び順など、他のツールが知らなくていい情報を名前空間の下に収めます。
規格の本体を小さく保ちつつ、各アプリの拡張を許す作りです。他のツールが読んだときに「知らないキー」で戸惑わないようになっています。
アイコンは複数サイズを書ける
icon は文字列でも、サイズ付きの配列でも書けます。複数書いておくと、使える中で一番いいものが選ばれます。
MulmoTerminal は 14 ピクセルで描くという制約があるので、小さいサイズ用の絵を別に用意しているプロジェクトならそちらが使われます。
{
"icon": [
{ "src": "docs/icon-16.png", "size": 16 },
{ "src": "docs/logo.png", "size": 128 }
]
}
3 つのファイルが、一般から具体の順に重なる
repo.json → .mulmoterminal.json → .mulmoterminal.local.json
プロジェクト このアプリの設定 この clone 1 本だけ
下の層が設定したキーを、上の層が置き換えます。repo.json だけで完結してもよく、OSS に置くならこれで十分です。
.mulmoterminal.json の色は、repo.json の色に勝ちます。これが実用上かなり効きます。企業のブランド色は、ターミナルの背景として一日見るのに向いている色とは限りません。真っ赤なブランド色のプロジェクトを、赤いヘッダーで一日見るのは疲れます。規格に従いながら、手元では別の色にできる — その逃げ道が .mulmoterminal.json です。
.mulmoterminal.local.json は、この clone 1 本だけに効く最上段。同じリポジトリを何本も持っているときに使います(詳細)。
提案しやすさが変わる
「この開発ツールの設定ファイルを足してください」は出しにくい PR です。
「プロジェクトの名前と説明とロゴと色を書いた repo.json を足しませんか」なら、出しやすい。内容がプロジェクト自身についての情報なので、メンテナにとっても意味があります。
同じファイルが、メンテナから見た意味と、自分から見た意味の両方を持ちます。
使ってみる
既存の MulmoTerminal があれば追加のインストールは不要です。初めての方は MulmoTerminal 完全ガイド の「使い方 3 ステップ」から。
動作確認の最小シナリオ
- プロジェクトのフォルダの一番上に
repo.jsonを作る - 中身を書く:
{ "name": "diffusion-lab", "description": "Training and evaluation for latent diffusion models", "color": "#7c3aed" } - そのフォルダで新しいマスを開く(既に開いていればタブを再読み込み)
- バッジに
diffusion-labが出て、ヘッダーが紫色になれば成功。1 色書いたのに、枠・ドット・ボタンまで同じ色相で揃います
やめるときは、repo.json を消すか、.mulmoterminal.json に自分の色を書けばそちらが勝ちます。
先に書いておくこと
repo.json は提案の段階です。
仕様は www.mulmoterminal.com/repo-json.html で公開されていて、状態は草案です。議論は receptron/mulmoterminal#1438 にあります。いま読んでいるのは MulmoTerminal で、他のツールが読むかどうかはこれからです。
つまり **「業界標準だから置く」ではなく「置いて損がないから置く」**という判断になります。
損がないと言えるのは、ただの小さな JSON で何も実行せず、ビルドにも CI にも影響しないからです。読まないツールは無視します。中身はプロジェクト自身の情報なので、他のツールが将来読んでも困る内容ではありません。
他人の OSS に提案するときも、この形なら説明できます。
まとめ
- 他人のプロジェクトに、自分の開発ツール用の設定ファイルを提案する PR は出しにくい
repo.jsonは特定アプリの名前がついていない、どのツールからも読めるメタデータ規格name/description/icon/colorの 4 項目。color1 つで 7 か所に展開される- アプリ固有のキーは
extensions.<app>の下に入れる - 3 層の優先順位は
repo.json→.mulmoterminal.json→.mulmoterminal.local.json。.mulmoterminal.jsonの色がrepo.jsonに勝つのが、手元で色を変える逃げ道
関連: repo.json の仕様(草案) / MulmoTerminal 公式ガイドの repo.json / MulmoTerminal でプロジェクトごとに色と名札を付ける / MulmoTerminal の .mulmoterminal.local.json — clone ごとに色を分ける


