Move window
Move Window is an XTerm window manipulation sequence that repositions the terminal window to a specified pixel coordinate on the screen.
Syntax
CSI 3 ; x ; y t Move window to pixel position (x, y)
move_window = 0x1b, "[", "3", ";", Pn, ";", Pn, "t" ;
Pn = digit, { digit } ;
digit = "0" | "1" | "2" | "3" | "4"
| "5" | "6" | "7" | "8" | "9" ;Parameters
| Parameter | Description | Default |
|---|---|---|
x | Horizontal pixel position from the left edge of the screen | 0 |
y | Vertical pixel position from the top edge of the screen | 0 |
Description
This sequence moves the terminal window so that its top-left corner is positioned at the pixel coordinates (x, y) relative to the top-left corner of the display. It is part of the XTerm CSI Ps ; Ps ; Ps t window manipulation family.
The coordinate system uses the screen's origin (0, 0) at the top-left corner, with x increasing to the right and y increasing downward. Coordinates are specified in pixels.
If the specified position would place the window partially or fully off-screen, the behavior depends on the window manager. Most window managers will clamp the position to keep at least part of the window visible.
The Window Position Report (CSI 13 t) can be used to query the current position of the window.
Some terminal emulators disable this sequence by default for security reasons, as a malicious application could move the terminal window off-screen. Check your terminal's configuration for options to enable or disable window manipulation sequences.
Examples
# Move window to top-left corner of screen
printf '\e[3;0;0t'
# Move window to position (100, 200)
printf '\e[3;100;200t'
Specifications
| Specification | Section |
|---|---|
| XTerm ctlseqs | — |
Terminal support
| Terminal | Support | Version | Notes |
|---|---|---|---|
| Terminal Emulators | |||
| Alacritty | ✗ | No | Rejected per escape_support.md:81-82 |
| Bobcat | ✓ | 0.9.0 | Handled via WhenWindowGeometryChange callback; requires WindowActions enabled in profile |
| contour | ✗ | No | Not implemented in WINDOWMANIP handler |
| foot | ✗ | No | CSI 3 t logs unimplemented warning |
| Ghostty | ✗ | No | CSI 3;x;y t not implemented |
| iTerm2 | ✓ | v20260216-nightly | CSI 3;x;y t via XTERMCC_WINDOWPOS |
| Kitty | ✗ | No | CSI 3 t not supported |
| Konsole | ✗ | No | CSI 3 t not implemented |
| mintty | ✓ | Yes | CSI 3;x;y t implemented |
| mlterm | ✓ | rel-3_8_0 | Reports fixed position 0,0 (CSI 3 t) |
| PuTTY | ✓ | 0.75 | CSI 3 t supported at terminal.c:4865-4875 |
| Rio | ✗ | No | |
| rxvt-unicode | ✓ | 1.2 | |
| st | ✗ | No | No CSI t window manipulation sequences implemented |
| terminology | ✗ | No | |
| VT100 | ✗ | No | |
| VTE | ~ | Yes | Parsed but implementation is no-op |
| WezTerm | ✗ | No | Parsed but handled as unimplemented |
| Windows Terminal | ✗ | No | CSI 3;x;y t not in WindowManipulationType enum (DispatchTypes.hpp:584-594) |
| xterm | ✓ | xterm-93 | |
| xterm.js | ✓ | 4.4.0 | CSI 3;x;y t. Requires windowOptions.setWinPosition enabled. |
| Multiplexers | |||
| cy | ✗ | No | Explicitly ignored |
| GNU Screen | ✗ | No | CSI 3;x;y t not implemented |
| tmux | ✗ | No | Sequence parsed but ignored (case 3 in winops) |
| tuios | ✗ | No | CSI 3 t not handled |
| Zellij | ✗ | No | |
See also
- Window Position Report — Query current window position
- Resize (pixels) — Resize window in pixel dimensions
- Resize (chars) — Resize window in character dimensions