跳到主要内容
ansicode

XTWINOPS — 窗口操作(CSI Ps ; Ps ; Ps t)

xterm 的窗口操作族 —— 调整大小、最小化、置顶/置底、查询尺寸、推入/弹出标题。

字节形式

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

\\x1b[\x1b[<Ps>t or \x1b[<Ps>;<Pa>;<Pb>t
\\033[\033[18t
\\e[\e[18t
ESC [ESC [ Ps ; Pa ; Pb t
hex1b 5b ... 74

说明

按首参数 `Ps` 分派。常用操作:`1` 取消最小化,`2` 最小化,`3;x;y` 移动到像素坐标 (x,y),`4;h;w` 调整到 (h,w) 像素,`5` 置顶,`6` 置底,`7` 刷新,`8;rows;cols` 文本区调整为 (rows,cols),`9;0` 取消最大化,`9;1` 最大化,`10;0` 退出全屏,`10;1` 进入全屏,`11` 查询是否最小化(回复 `\x1b[1t` / `\x1b[2t`),`13` 查询窗口位置,`14` 查询像素尺寸,`18` 查询文本尺寸(回复 `\x1b[8;rows;colst`),`19` 查询屏幕字符尺寸,`20` 查询图标标题,`21` 查询窗口标题,`22;0` 同时推入两种标题,`22;1` 推入图标标题,`22;2` 推入窗口标题,`23;0` / `23;1` / `23;2` 弹出。许多操作(`3`/`4`/`8`/`9`/`10`/`13`/`14`/`20`/`21`)受 xterm `allowWindowOps` 资源保护以防滥用 —— 多数现代终端默认禁用,调整大小 / 移动请求会被静默忽略,只有查询(`14`、`18`、`21`)可靠地往返。推入 / 弹出标题(`22`/`23`)是最便携的用法,也是 tmux 在嵌套会话间保留窗口名的实现基础。

规范出处: xterm-ctlseqs (XTWINOPS) / DECSLPP partial overlap

参数

Ps操作选择(1–23)。部分操作需要额外的 Pa / Pb 参数。

示例

bash
# Query pixel size — reply: \x1b[4;height;widtht\nprintf '\033[14t'
python
import sys; sys.stdout.write('\x1b[18t'); sys.stdout.flush()  # reply: \x1b[8;rows;colst
go
fmt.Print("\x1b[22;0t")   // push BOTH titles
javascript
process.stdout.write('\x1b[23;0t')  // pop BOTH titles
c
printf("\x1b[8;24;80t");  // resize text area to 24 rows × 80 cols (allowWindowOps required)

终端支持

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

相关序列