OSC 9 — 桌面通知(iTerm2 / Windows Terminal)
从终端触发原生桌面通知 —— 长任务完成、构建结束等场景。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b]9;MESSAGE\x07\\033[
\033]9;MESSAGE\007\\e[
\e]9;MESSAGE\aESC [
ESC ] 9 ; MESSAGE BELhex
1b 5d 39 3b ... 07说明
在系统托盘 / 通知中心 / KNotifications 中弹出一个包含指定消息字符串的桌面通知。最早源自 iTerm2 的 `iTerm2 growl` 机制(OSC 9 别名沿用自 macOS Growl 守护进程时代);Windows Terminal 后来也采用同一控制码。终端会把消息载荷转发到宿主 OS 通知 API —— 用户会在终端窗口之外看到横幅,常用于长编译、`make && say done` 的替代、CI 轮询。不支持的终端会静默丢弃整条 OSC 9,因此可安全地无条件发送。注意:ConEmu 将 OSC 9 重新定义为其进度条协议(`\x1b]9;4;<state>;<percent>\x07`),是另一套语义;发送复杂 OSC 9 载荷前请先查终端文档。
规范出处: iTerm2 Proprietary Escape Codes (OSC 9) / Windows Terminal
示例
make && printf '\033]9;build finished\007'import sys; sys.stdout.write('\x1b]9;build finished\x07')fmt.Print("\x1b]9;build finished\x07")process.stdout.write('\x1b]9;build finished\x07')printf("\x1b]9;build finished\x07");终端支持
- xterm
- 不支持
- Linux console (fbcon)
- 不支持
- macOS Terminal.app
- 不支持
- iTerm2
- 支持
- Windows Terminal
- 支持
- cmd.exe / ConPTY
- 不支持
- kitty
- 不支持
- alacritty
- 不支持
- WezTerm
- 支持
- Ghostty
- 支持
- GNOME Terminal
- 不支持
- Konsole
- 部分
- tmux
- 不支持
- GNU screen
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 不支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 | 部分 | 不支持 | 不支持 |