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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 部分 | 部分 | 部分 | 不支持 | 部分 | 部分 | 部分 | 部分 | 部分 | 部分 | 不支持 | 不支持 |