跳到主要内容
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 资源保护以防滥用 —— 多数现代终端默认禁用,调整大小 / 移动请求会被静默忽略,只有查询(141821)可靠地往返。推入 / 弹出标题(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
支持

相关序列