ConEmu 擴充 (OSC 9;n)
由 ConEmu 首創的各種擴充。
ConEmu 是一款較舊的 Windows 終端機模擬器,它使用 OSC 9 首創了若干[自訂協定]。遺憾的是,這與 iTerm2 的 顯示桌面通知 協定衝突,後者同樣使用 OSC 9。 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 秒硬編碼逾時的原因,逾時後會重設目前進度狀態。
如果你正在撰寫使用此協定的程式,必須確保定期更新進度狀態作為保活訊號。遺憾的是,這方面沒有標準化, 但我們建議至少每秒更新一次。