OSC
from エスケープシーケンス
Operating System Command
OSCシーケンスは文字列パラメータを持ち、ターミナルのメタ情報制御に使われる。
フォーマット
code:_
OSC = ESC ]
完全な形式: ESC ] <数字> ; <文字列データ> <ST or BEL>
ST = ESC \ (String Terminator)
BEL = 0x07 (互換性のため広く使われる)
タイトル設定
code:_
ウィンドウタイトルとアイコン名を設定:
\x1b]0;My Terminal\x07
ESC ] 0 ; M y T e r m i n a l BEL
ウィンドウタイトルのみ:
\x1b]2;My Terminal\x07
アイコン名のみ:
\x1b]1;My Terminal\x07
カラーパレット操作
code:_
OSC 4: カラーパレットの設定/問い合わせ
\x1b]4;1;rgb:ff/00/00\x1b\\
→ パレット色1番を赤(#FF0000)に設定
OSC 10: 前景色の設定
\x1b]10;rgb:ff/ff/ff\x1b\\
OSC 11: 背景色の設定
\x1b]11;rgb:00/00/00\x1b\\
OSC 12: カーソル色の設定
\x1b]12;rgb:00/ff/00\x1b\\
ハイパーリンク (OSC 8)
code:_
OSC 8 でターミナル上にクリック可能なハイパーリンクを埋め込める:
\x1b]8;params;uri\x1b\\ リンク開始
表示テキスト
\x1b]8;;\x1b\\ リンク終了
具体例:
\x1b]8;;https://example.com\x1b\\Click here\x1b]8;;\x1b\\
→ "Click here" がクリック可能なリンクとして表示される
パラメータにIDを指定して同一リンクを分割可能:
\x1b]8;id=mylink;https://example.com\x1b\\part1\x1b]8;;\x1b\\
...
\x1b]8;id=mylink;https://example.com\x1b\\part2\x1b]8;;\x1b\\
OSC 133 — シェル統合 (Shell Integration)
iTerm2やVS Codeターミナルで使われるシェル統合プロトコル。プロンプト・コマンド・出力の境界をターミナルに伝える。
code:_
プロンプト開始: \x1b]133;A\x07
コマンド開始: \x1b]133;B\x07
コマンド実行開始: \x1b]133;C\x07
コマンド完了: \x1b]133;D;exit_code\x07
典型的なシェルの流れ:
\x1b]133;A\x07 ← プロンプト表示開始
$ ls -la ← ユーザーがコマンドを入力
\x1b]133;B\x07 ← ユーザーがEnterを押した
\x1b]133;C\x07 ← コマンド実行開始
total 48 ← コマンド出力
drwxr-xr-x ...
\x1b]133;D;0\x07 ← コマンド完了 (exit code 0)
この情報があると、ターミナルは「前のコマンドの出力領域」を識別でき、出力のスクロール、エラー表示のハイライト、コマンド間ナビゲーションなどが可能になる。
OSC 52 — クリップボード操作
code:_
クリップボードに書き込み:
\x1b]52;c;SGVsbG8=\x07
→ "Hello" (Base64エンコード) をクリップボードにコピー
クリップボードの読み取り要求:
\x1b]52;c;?\x07
→ ターミナルが \x1b]52;c;<base64データ>\x07 で応答