GhosttyやClaude Codeで完了通知に使われているOSCとは
OSCとはなにか?
体系的な文献には辿り着けなかったが、どうやら↓らしい。
OSC 9 / OSC 777とは
これらはいずれもOSへ通知を行うためのもの。
OSCは厳密な規格があるのではなく、ソースコード実装がデファクトスタンダードとして広まっていったらしい。
Claude CodeはOSC 9のみをサポートしている
Claude Codeが通知用にサポートしているのはOSC 9のみ。これは以下のIssueに記載がある。
https://github.com/anthropics/claude-code/issues/3340
Claude Code only sends OSC 9 notifications, not OSC 777.
GhosttyでOSCシーケンスによる通知を試すには
GhosttyはOSC 9 / OSC 777の双方をサポートしている。
GhosttyのOSCシーケンスについては、公式ドキュメントでは以下に記述がある。
https://ghostty.org/docs/vt/concepts/sequences#osc
GhosttyなどOSCをサポートしているターミナルで以下のコマンドを実行すると、通知動作を確認できる。
ただし以下を満たしていないと通知が動作しない。
- OSレベルでGhosttyの通知がオンであること
- sleepの間にGhosttyからフォーカスを外すこと
OSC 9
sleep 5; printf '\e]9;This is test\a'
OSC 777
sleep 5; printf '\e]777;notify;タイトル;メッセージ本文\a'
ZellijはOSC 9 / OSC 777をいずれもサポートしていない
ZellijでClaude Codeを使うとOSC 9をサポートしていてほしいものだが、2026年1月時点ではいずれもサポートされていない。
参考までに、OSCのハンドリング処理と思われるソースコードは以下。
https://github.com/zellij-org/zellij/blob/005769cfa58b65cc6b2d6ce273ad367bf802bfb0/zellij-server/src/panes/grid.rs#L2582-L2762
またこれらのOSCをパススルーする仕組みもIssueにはあるが、実現されていないようだ。
https://github.com/zellij-org/zellij/issues/3954