ConEmu 拡張 (OSC 9;n)
ConEmu によって考案された各種拡張。
ConEmu は Windows 向けの古いターミナルエミュレーターで、OSC 9 を使ったいくつかの[独自プロトコル]を先駆けて実装しました。残念ながら、これは同じく OSC 9 を使う iTerm2 の デスクトップ通知の表示 プロトコルと衝突します。 Ghostty は、各 ConEmu シーケンスが持つ サブ ID を見つけることで両者を区別しようとします。このサブ ID が実際の機能を決めます。 見つからない場合は、デスクトップ通知の表示シーケンスとして扱われます。
以下のプロトコルは、良くても仕様が不十分で、最悪の場合はセキュリティ面で非常に疑わしいため、Ghostty は下記に挙げる拡張のみを実装しています。Ghostty が解析するものは他にも多数ありますが、セキュリティ上の理由、または Ghostty が ConEmu のクローンを目指していないことから、無視されるか OSC 9 シーケンスへ変換されます。
- 0x1B
- ESC
- 0x5D
- ]
- 0x39
- 9
- 0x3B
- ;
- 0x34
- 4
- 0x3B
- ;
- ____
- s
- 0x1B
- ESC
- 0x5C
- \
- 0x1B
- ESC
- 0x5D
- ]
- 0x39
- 9
- 0x3B
- ;
- 0x34
- 4
- 0x3B
- ;
- ____
- s
- 0x3B
- ;
- ____
- v
- 0x1B
- ESC
- 0x5C
- \
s と v の値に基づいて現在の進捗状態を変更します。
現在の進捗はさまざまな状態を取ります:非アクティブ(既定)、進行中、 エラー、不確定。Ghostty では各分割の上部に進捗バーとして視覚的に表示されます。 その値は 0〜100(両端を含む)の整数で表され、進捗バーのパーセントに対応します。
新しい状態と値は主に s の値に依存します:
s | 新しい状態 | 新しい値 |
|---|---|---|
0 | 非アクティブ | 0 |
1 | 進行中 | v |
2 | エラー | 指定時は v、それ以外は変更なし |
3 | 不確定 | 変更なし |
4 | 一時停止 | 指定時は v、それ以外は変更なし |
Note
このプロトコルでは、進捗状態がいつ古くなったかをターミナルが判断できないことに注意してください。たとえば、プログラムが進捗状態を片付けずに終了した場合です。 これが Ghostty に約 15 秒のハードコードされたタイムアウトがあり、経過後に現在の進捗状態をリセットする理由です。
このプロトコルを使うプログラムを書く場合は、キープアライブ信号として進捗状態を定期的に更新する必要があります。残念ながらこれに関する標準化はありませんが、 少なくとも 1 秒に 1 回の更新を推奨します。