XTSMTITLE / XTRMTITLE — 设置 / 重置标题显示模式(CSI > Ps ; … t / T)
切换 xterm 解读 / 返回窗口标题与图标名称字符串的方式 —— 十六进制 vs UTF-8 编码、截断、设置 vs 查询行为。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[><Ps>;<Ps>…t (set) \x1b[><Ps>;<Ps>…T (reset)\\033[
\033[>2t / \033[>2T\\e[
\e[>2t / \e[>2TESC [
ESC [ > Ps ; Ps … t / ESC [ > Ps ; Ps … Thex
1b 5b 3e ... 74 / 1b 5b 3e ... 54说明
前缀 > 把这两个序列与 XTWINOPS(CSI Ps ; Ps ; Ps t,调整 / 移动 / 查询窗口)以及 SD / 鼠标追踪的末字节 T 区分开。XTSMTITLE(\x1b[><Ps>t)打开一个或多个标题显示模式;XTRMTITLE(\x1b[><Ps>T)关闭同一组。每个 Ps 选一种模式:0 把传入的 OSC 0/1/2 标题文本按十六进制对解码(用于非 ASCII 的传统转义);1 把标题文本按 UTF-8 解读(xterm 自 2010 年代起的默认行为);2 把图标名按 UTF-8 解读;3 查询回复(OSC 20 / 21 / XTWINOPS 20 / 21)以 UTF-8 形式返回标题,而非 xterm 内部实际存储的字节。一条序列里可组合多个 Ps:\x1b[>1;2t 同时开启两种 UTF-8 模式。配合 OSC 0/1/2(设置标题)与 XTWINOPS 20/21(查询标题),这些开关控制*编码*的回环。多数现代终端默认就是 UTF-8,此类序列通常是空操作,但在推送含非 ASCII 字符的标题前显式 >1;2t 仍是最稳妥的可移植起手式。
规范出处: xterm-ctlseqs (XTSMTITLE / XTRMTITLE)
参数
| Ps | 模式选择:0 标题十六进制解码、1 窗口标题按 UTF-8、2 图标名按 UTF-8、3 查询回复按 UTF-8。可组合多个。 |
示例
# Opt in to UTF-8 for both title + icon name before pushing a non-ASCII title:\nprintf '\033[>1;2t'\nprintf '\033]0;\xe6\x9c\x80\xe6\x96\xb0\xe6\x97\xa5\xe5\xbf\x97\007'import sys\nsys.stdout.write('\x1b[>1t') # UTF-8 window title\nsys.stdout.write('\x1b]0;\u4e2d\u6587\x07') # CJK title now decodes correctlyfmt.Print("\x1b[>1;2t") // UTF-8 for title + icon\nfmt.Print("\x1b[>1;2T") // and back to hex-only when doneprocess.stdout.write('\x1b[>3t') // make query replies return UTF-8 stringsprintf("\x1b[>1;2t"); /* before OSC 0;<utf8 title>;BEL */终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 不支持 | 部分 | 部分 | 不支持 | 不支持 | 不支持 | 部分 | 不支持 | 部分 | 部分 | 支持 | 支持 |