跳到主要内容
ansicode

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[>2T
ESC [ESC [ > Ps ; Ps … t / ESC [ > Ps ; Ps … T
hex1b 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。可组合多个。

示例

bash
# 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'
python
import sys\nsys.stdout.write('\x1b[>1t')        # UTF-8 window title\nsys.stdout.write('\x1b]0;\u4e2d\u6587\x07')   # CJK title now decodes correctly
go
fmt.Print("\x1b[>1;2t")   // UTF-8 for title + icon\nfmt.Print("\x1b[>1;2T")   // and back to hex-only when done
javascript
process.stdout.write('\x1b[>3t')   // make query replies return UTF-8 strings
c
printf("\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
不支持

相关序列