XTWINOPS — 窗口操作(CSI Ps ; Ps ; Ps t)
xterm 的窗口操作族 —— 调整大小、最小化、置顶/置底、查询尺寸、推入/弹出标题。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[<Ps>t or \x1b[<Ps>;<Pa>;<Pb>t\\033[
\033[18t\\e[
\e[18tESC [
ESC [ Ps ; Pa ; Pb thex
1b 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 参数。 |
示例
# Query pixel size — reply: \x1b[4;height;widtht\nprintf '\033[14t'import sys; sys.stdout.write('\x1b[18t'); sys.stdout.flush() # reply: \x1b[8;rows;colstfmt.Print("\x1b[22;0t") // push BOTH titlesprocess.stdout.write('\x1b[23;0t') // pop BOTH titlesprintf("\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
- 支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 部分 | 部分 | 部分 | 不支持 | 部分 | 部分 | 部分 | 部分 | 部分 | 部分 | 支持 | 支持 |