跳到主要内容
ansicode

OSC 9 — 桌面通知(iTerm2 / Windows Terminal)

从终端触发原生桌面通知 —— 长任务完成、构建结束等场景。

字节形式

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

\\x1b[\x1b]9;MESSAGE\x07
\\033[\033]9;MESSAGE\007
\\e[\e]9;MESSAGE\a
ESC [ESC ] 9 ; MESSAGE BEL
hex1b 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

示例

bash
make && printf '\033]9;build finished\007'
python
import sys; sys.stdout.write('\x1b]9;build finished\x07')
go
fmt.Print("\x1b]9;build finished\x07")
javascript
process.stdout.write('\x1b]9;build finished\x07')
c
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
不支持

相关序列

在家族食谱中

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