跳到主要内容
ansicode

OSC 9 ; 4 — ConEmu 进度指示器(Windows Terminal / Ghostty)

把实时进度百分比 / 暂停 / 错误状态推送到任务栏或标签图标 —— ConEmu 协议,被 Windows Terminal 1.18+ 标准化。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b]9;4;<state>;<percent>\x07
\\033[\033]9;4;<state>;<percent>\007
\\e[\e]9;4;<state>;<percent>\a
ESC [ESC ] 9 ; 4 ; STATE ; N BEL
hex1b 5d 39 3b 34 3b ... 3b ... 07

说明

ConEmu 把 OSC 9 重用为进度条 —— 与 iTerm2 的 `OSC 9 ; <消息>` 通知(slug `osc-notification`)不同;第二个 token `;4` 是消歧符。终端将进度状态转发给所在的环境 UI:Windows Terminal 更新任务栏图标(Windows 11 统一进度 UX);Ghostty / WezTerm 给标签指示器上色;ConEmu 在标题栏画一条水平进度条。四种状态(`;4;` 后第一个数字): - **`0`** —— 移除 / 清除进度(显式复位)。 - **`1`** —— 正常进度,`<percent>` 0–100 —— 默认线性进度条。 - **`2`** —— 错误状态,`<percent>` 0–100 —— 进度条转红,用于带进度的构建失败。 - **`3`** —— 不确定 —— `<percent>` 忽略;渲染不定形旋转 / 流条。 - **`4`** —— 警告 / 暂停,`<percent>` 0–100 —— 黄色。 用法:长时间 CLI 命令(`docker pull`、`cargo build`、`ffmpeg` 转码、`apt` 类安装器)在每个有意义步骤后发 `OSC 9 ; 4 ; 1 ; <pct>`,成功时发 `OSC 9 ; 4 ; 0`。失败时:`OSC 9 ; 4 ; 2 ; <最后 pct>`,用户确认后可选再发 `0`。不支持的终端静默丢弃 —— 可无条件发送。关键细节:`\x1b]9;` 前缀与 iTerm2 通知 OSC 9 撞名;几乎所有同时实现两者的模拟器以是否带 `;4` 作判别,所以**完整**发送 `\x1b]9;4;<state>;<pct>\x07`,不要缩写。

规范出处: ConEmu OSC 9;4 / Windows Terminal 1.18+ / Ghostty

参数

state0 移除、1 正常、2 错误、3 不确定、4 警告 / 暂停。
percent0–100 整数(state=3 不确定时忽略;1/2/4 必需)。

示例

bash
# Build-progress wrapper:\nfor pct in 10 30 60 90; do\n  make step-$pct\n  printf '\033]9;4;1;%d\007' "$pct"\ndone\nprintf '\033]9;4;0\007'   # clear on success
python
import sys, time\nfor pct in range(0, 101, 5):\n    sys.stdout.write(f'\x1b]9;4;1;{pct}\x07'); sys.stdout.flush()\n    time.sleep(0.05)\nsys.stdout.write('\x1b]9;4;0\x07')
go
// Indeterminate while waiting on the network:\nfmt.Print("\x1b]9;4;3\x07")\ndoSlowFetch()\nfmt.Print("\x1b]9;4;0\x07")
javascript
// Error red-bar at 50%:\nprocess.stdout.write('\x1b]9;4;2;50\x07')
c
/* Warning / paused state at 75%: */\nprintf("\x1b]9;4;4;75\x07"); fflush(stdout);

终端支持

xterm
不支持
Linux console (fbcon)
不支持
macOS Terminal.app
不支持
iTerm2
不支持
Windows Terminal
支持
cmd.exe / ConPTY
不支持
kitty
部分
alacritty
不支持
WezTerm
支持
Ghostty
支持
GNOME Terminal
不支持
Konsole
不支持
tmux
不支持
GNU screen
不支持

相关序列

在家族食谱中

OSC 食谱 · 6. 内联图片与进度 —— `OSC 1337` 与 `OSC 9 ; 4`