課題:音は鳴る。どのプロジェクトかが分からない
9 枚のマスに色を付けたので、画面を見ていればどれがどのプロジェクトか分かります。プロジェクトごとの色分けで解決した話です。
ただ、ブラウザで資料を書いているときは、その画面が前に出ていません。マスは別のウィンドウにあります。
そして、並列で AI を動かす本当の利点は席を離れられることです。別の作業をしていて、呼ばれたら戻る。そのときに効くのは色ではなく音のほうです。
音が鳴りました。見に行くと、個人のメモ用プロジェクトでした。急ぎません。戻ります。また音が鳴ります。見に行くと、クライアントのプロジェクトでした。こちらは急ぎます。
既定では、どちらも同じ内蔵チャイムです。音ではプロジェクトが区別できないので、鳴るたびに見に行くことになります。これだと、音の意味が「作業中断の合図」になってしまって、席を立つ値打ちが減ります。
プロジェクトごとに音を変えられる
MulmoTerminal はプロジェクトのフォルダ直下の .mulmoterminal.json に通知音を書けます。
{
"sound": "./.mulmoterminal/alert.mp3",
"sounds": { "command-failed": "preset:gong" }
}
sound→ そのプロジェクトの全種類の通知音を上書きsounds→ 特定の種類だけ上書き(下の表の 6 種類から選べる)
そのフォルダで開いたマスでは、どちらもパソコン全体の設定より優先されます。
音声ファイルを用意しなくていい
音声ファイルを探してプロジェクトに置くのは面倒です。そのために、プリセットの音が同梱されています。
{ "sounds": { "command-failed": "preset:gong" } }
使えるプリセットは 7 種類: chime / coin / cheep / door / gong / magic / meow。初回だけ ~/.mulmoterminal/sounds/ に取得し、以降はそこから読むのでオフラインでも鳴ります。
これなら、プロジェクト側に音声ファイルを置かずに「このプロジェクトだけ失敗音を銅鑼にする」ができます。
6 種類の瞬間に、別の音を付けられる
鳴る瞬間は 6 種類あります。既定で ON なのは最初の 2 つだけで、残りは opt-in です。
| 種類 | いつ鳴る | 既定 |
|---|---|---|
finished |
ターンが終わって出力が未読 | ON |
waiting |
許可プロンプトや質問で停止した | ON |
command-done |
Run セルのコマンドが正常終了(exit 0) | OFF |
command-failed |
Run セルのコマンドが異常終了 | OFF |
session-exited |
セッションの端末が終了 | OFF |
pr-ci-failed |
そのディレクトリの PR が赤くなった | OFF |
8 本並列で通知に疲れたらまず触るのは "soundKinds": ["waiting"]。呼ばれたことは分かるまま、それ以外で中断されなくなります。
3 つ以上に別の音を付けても、区別できない
やってみると分かる部分です。9 枚のマスに 9 種類の音を付けたくなりますが、やめたほうがいいです。
区別できるのは最初の数日です。そのあとは「これは何の音だっけ」と考えるようになります。考えているあいだに音の意味が消えて、結局見に行くことになります。
汽笛の合図が少ないのも、学校のチャイムが数パターンしかないのも、覚えられる数に限りがあるからです。
効くのは 1 つか 2 つだけ
実際に効く使い方はこのあたりです。どれも「覚えるのは 1 つだけ」になっています。
- メインのプロジェクトだけ音を変える。それ以外は既定のまま。「いつもの音じゃないからメインだ」で分かる
- 失敗音だけ変える。成功は聞き流してよいので、失敗だけ区別する
- 長時間走らせるプロジェクトの完了音だけ変える。他が終わっても反応しなくていい
パスはそのフォルダの中だけ
音声ファイルのパスは、そのフォルダからの相対です。絶対パスや ../ で外に出るものは拒否されます。
アイコンと同じ扱いで、開いたプロジェクトがマシン上の別の場所を指せないようにするためです。人のプロジェクトを取ってきて開くことは普通にあります。その設定ファイルが /Users/you/private/secret.mp3 を再生できてしまうと、それはファイルの存在を確かめる手段になります。
preset:<id> はこの制約の外です。パソコン上のユーザー専用フォルダから読むので、プロジェクト側がパスを書く必要がありません。
worktree には音が引き継がれない
MulmoTerminal の git worktree 隔離で切った作業フォルダには、プロジェクトの色・名前・モデル・順位はコピーされます。ただし sound / sounds / addDirs は引き継がれません。
理由はパスの性質です。./.mulmoterminal/alert.mp3 は、プロジェクトのフォルダから見た実在のパスですが、worktree から見ると存在しません。引き継ぐと、音が鳴らないのに設定が書かれている状態になります。
プリセットだけなら引き継いでも動きますが、項目ごとに扱いを変えると規則が読めなくなるので、まとめて引き継がない側にしています。
プリセットを worktree でも使いたい場合は、worktree 側の .mulmoterminal.local.json に手で書けます。
落とし穴:見ているマスでは鳴らない
一つ忘れると延々と悩む仕様があります。通知音は、いま拡大して見ているマスでは鳴りません。
目の前で終わったものに音で知らせる意味がないからです。プロジェクトごとに音を変えるのは、そのマスを見ていないときのための設定です。
設定してそのマスを見ながら試しても鳴らないので、「設定が効いていない」と思って何度も書き直すことになります。別のマスを拡大しておくか、タイル表示(9 マス)に戻してから試してください。
使ってみる
既存の MulmoTerminal があれば追加のインストールは不要です。初めての方は MulmoTerminal 完全ガイド の「使い方 3 ステップ」から。
動作確認の最小シナリオ
- プロジェクトのフォルダ直下に
.mulmoterminal.jsonを作る - 中身を書く:
{ "sounds": { "command-failed": "preset:gong" } } - 別のマスを拡大しておく(試すマスを見ない)
- 対象フォルダで
exit 1を返す Run セルを起こす(ヘッダーのrun:"shell"ボタンから) - 銅鑼の音が鳴れば成功
AI にファイルを書かせたときは即座に効きます。手書きしたときはタブを再読み込みします。
やめるときは、.mulmoterminal.json から sound / sounds を消せば既定の音に戻ります。
まとめ
- 色分けは画面を見ているときにしか効かない。席を離れられるのが並列の利点なので、耳で分かる必要がある
.mulmoterminal.jsonのsound/soundsにpreset:<id>かファイルパスを書くと、そのフォルダのマスだけ音が変わる- 変えるのは 1 つか 2 つにとどめる。3 つ以上は覚えられない
- 音声ファイルのパスはそのフォルダの中だけ。プリセット(7 種)ならファイルを置く必要がない
- worktree には音が引き継がれない。パスがそこで解決できないため
- 見ているマスでは鳴らない。別のマスを拡大して試す
関連: MulmoTerminal 公式ガイドの通知音 / MulmoTerminal でプロジェクトごとに色と名札を付ける / MulmoTerminal の git worktree 隔離


