DECSDM — Sixel display mode (CSI ? 80 h / l)
Choose the cursor's resting position after a sixel render — at top-left of the image (private-mode set) or below the image (reset, the modern default).
Byte forms
Every common string-literal form so you can paste-and-search either direction.
\x1b[?80h (set) \x1b[?80l (reset)\033[?80h / \033[?80l\e[?80h / \e[?80lESC [ ? 80 h / ESC [ ? 80 l1b 5b 3f 38 30 68 / 6cDescription
Sixel Display Mode — a DEC private mode that controls cursor placement after a sixel graphics block is rendered. **Set** (`\x1b[?80h`) selects DEC's original behaviour: the cursor returns to the top-left corner of the sixel image, overlapping the rendered pixels. **Reset** (`\x1b[?80l`, the default in xterm and most modern emulators) moves the cursor to the cell **below** the bottom-left corner of the image — the cell where the next character would naturally land in a paragraph below the picture. The reset behaviour is what tools like `chafa`, `timg`, `image.nvim`, `imgcat` (kitty), and `viu` assume — drawing several images stacked vertically just emits them in sequence and lets the cursor advance below each. Enabling the set mode is exclusively useful when you want to overlay text on top of a sixel image (a watermark, a label) without first moving the cursor explicitly. Note: kitty's image protocol (`dcs-kitty-graphics`) uses its own cursor-advance flag (`C=0` or `C=1`), not DECSDM — DECSDM only governs DCS-P payloads (sixel). Support is uniform across sixel-capable emulators; non-sixel emulators silently ignore.
Spec citation: DEC VT340 (Sixel) / xterm-ctlseqs
Parameters
Examples
# Modern default — cursor lands below each image, so several stack vertically:\nprintf '\033[?80l'\ncat img1.six img2.six img3.siximport sys\nsys.stdout.write('\x1b[?80h') # legacy DEC: cursor returns to image top-left\nwith open('logo.six', 'rb') as f: sys.stdout.buffer.write(f.read())fmt.Print("\x1b[?80l") // modern: cursor advances below sixelprocess.stdout.write('\x1b[?80h') // overlay text on next renderprintf("\x1b[?80l"); /* required before image.nvim-style stacked render */Terminal support
- xterm
- yes
- Linux console (fbcon)
- no
- macOS Terminal.app
- no
- iTerm2
- yes
- Windows Terminal
- no
- cmd.exe / ConPTY
- no
- kitty
- no
- alacritty
- no
- WezTerm
- yes
- Ghostty
- partial
- GNOME Terminal
- no
- Konsole
- partial
- tmux
- no
- GNU screen
- no
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| yes | no | no | yes | no | no | no | no | yes | partial | no | partial | no | no |