foot-ctlseqs(7) Miscellaneous Information Manual foot-ctlseqs(7)

# [NAME](#NAME)

foot-ctlseqs - terminal control sequences supported by foot

# [DESCRIPTION](#DESCRIPTION)

This document describes all the control sequences supported by foot.

- Control characters
- Sequences beginning with ESC
- CSI - Control Sequence Introducer  
  \- SGR  
  \- Indexed and RGB colors (256-color palette and 24-bit colors)  
  \- Private modes  
  \- Window manipulation  
  \- Other
- OSC - Operating System Command
- DCS - Device Control String

# [Control characters](#Control_characters)

**Sequence** **Name** **Description** \\a BEL Depends on what **bell** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5) is set to. \\b BS Backspace; move the cursor left one step. Wrap if *bw* is enabled. \\t HT Horizontal tab; move the cursor to the next tab stop. \\n LF Line feed; move the cursor down one step, or scroll content up if at the bottom line. \\v VT Vertical tab; identical to *LF*. \\f FF Form feed; identical to *LF*. \\r CR Carriage ret; move the cursor to the leftmost column. \\x0E SO Shift out; select the *G1* character set. \\x0F SI Shift in; select the *G0* character set.

# [Sequences beginning with ESC](#Sequences_beginning_with_ESC)

Note: this table excludes sequences where ESC is part of a 7-bit equivalent to 8-bit C1 controls.

**Sequence** **Name** **Origin** **Description** \\E 7 DECSC VT100 Save cursor position. \\E 8 DECRC VT100 Restore cursor position. \\E c RIS VT100 Reset terminal to initial state. \\E D IND VT100 Line feed; move the cursor down one step, or scroll content up if at the bottom margin. \\E E NEL VT100 Next line; move the cursor down one step, and to the first column. Content is scrolled up if at the bottom line. \\E H HTS VT100 Set one horizontal tab stop at the current position. \\E M RI VT100 Reverse index; move the cursor up one step, or scroll content down if at the top margin. \\E N SS2 VT220 Single shift select of G2 character set (affects next character only). \\E O SS3 VT220 Single shift select of G3 character set (affects next character only). \\E = DECKPAM VT100 Switch keypad to *application* mode. \\E &gt; DECKPNM VT100 Switch keypad to *numeric* mode. \\E ( *C* SCS VT100 Designate G0 character set. Supported values for *C* are: **0** (DEC Special Character and Line Drawing Set), and **B** (USASCII). \\E ) *C* SCS VT100 Designate G1 character set. Same supported values for *C* as in *G0*. \\E * *C* SCS VT220 Designate G2 character set. Same supported values for *C* as in *G0*. \\E + *C* SCS VT220 Designate G3 character set. Same supported values for *C* as in *G0*.

# [CSI](#CSI)

All sequences begin with **\\E[**, sometimes abbreviated "CSI". Spaces are used in the sequence strings to make them easier to read, but are not actually part of the string (i.e. **\\E[ 1 m** is really **\\E[1m**).

## [SGR](#SGR)

All SGR sequences are in the form **\\E[** *N* **m**, where *N* is a decimal number - the *parameter*. Multiple parameters can be combined in a single CSI sequence by separating them with semicolons: **\\E[ 1;2;3** **m**.

**Parameter** **Description** 0 Reset all attributes 1 Bold 2 Dim 3 Italic 4 Underline, including styled underlines 5 Blink 7 Reverse video; swap foreground and background colors 8 Conceal; text is not visible, but is copiable 9 Crossed-out/strike 21 Double underline 22 Disable **bold** and **dim** 23 Disable italic 24 Disable underline 25 Disable blink 27 Disable reverse video 28 Disable conceal 29 Disable crossed-out 30-37 Select foreground color (using **regularN** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5)) 38 Select foreground color, see "indexed and RGB colors" below 39 Use the default foreground color (**foreground** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5)) 40-47 Select background color (using **regularN** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5)) 48 Select background color, see "indexed and RGB colors" below 49 Use the default background color (**background** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5)) 58 Select underline color, see "indexed and RGB colors" below 59 Use the default underline color 90-97 Select foreground color (using **brightN** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5)) 100-107 Select background color (using **brightN** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5))

## [Indexed and RGB colors (256-color palette and 24-bit colors)](#Indexed_and_RGB_colors_%28256)

Foot supports both the new sub-parameter based variants, and the older parameter based variants for setting foreground and background colors.

Indexed colors:

- **\\E[ 38 : 5 :** *idx* **m**
- **\\E[ 38 ; 5 ;** *idx* **m**

RGB colors:

- **\\E[ 38 : 2 :** *cs* **:** *r* **:** *g* **:** *b* **m**
- **\\E[ 38 : 2 :** *r* **:** *g* **:** *b* **m**
- **\\E[ 38 ; 2 ;** *r* **;** *g* **;** *b* **m**

The first variant is the "correct" one (and foot also recognizes, but ignores, the optional *tolerance* parameters).

The second one is allowed since many programs "forget" the color space ID, *cs*.

The sub-parameter based variants are preferred, and are what foot's [**terminfo**(5)](/man/enterprise-packages/foot/terminfo.5) entry uses.

## [Private Modes](#Private_Modes)

There are several Boolean-like "modes" that affect certain aspects of the terminal's behavior. These modes can be manipulated with the following 4 escape sequences:

**Sequence** **Name** **Description** \\E[ ? *Pm* h DECSET Enable private mode \\E[ ? *Pm* l DECRST Disable private mode \\E[ ? *Pm* s XTSAVE Save private mode \\E[ ? *Pm* r XTRESTORE Restore private mode

The *Pm* parameter in the above sequences denotes a numerical ID that corresponds to one of the following modes:

**Parameter** **Origin** **Description** 1 VT100 Cursor keys mode (DECCKM) 5 VT100 Reverse video (DECSCNM) 6 VT100 Origin mode (DECOM) 7 VT100 Auto-wrap mode (DECAWM) 12 AT&T 610 Cursor blink 25 VT220 Cursor visibility (DECTCEM) 45 xterm Reverse-wraparound mode 47 xterm Same as 1047 (see below) 66 VT320 Numeric keypad mode (DECNKM); same as DECKPAM/DECKPNM when enabled/disabled 1000 xterm Send mouse x/y on button press/release 1001 xterm Use hilite mouse tracking 1002 xterm Use cell motion mouse tracking 1003 xterm Use all motion mouse tracking 1004 xterm Send FocusIn/FocusOut events 1006 xterm SGR mouse mode 1007 xterm Alternate scroll mode 1015 urxvt urxvt mouse mode 1016 xterm SGR-Pixels mouse mode 1034 xterm 8-bit Meta mode 1035 xterm Num Lock modifier (see xterm numLock option) 1036 xterm Send ESC when Meta modifies a key (see xterm metaSendsEscape option) 1042 xterm Perform action for BEL character (see **bell** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5)) 1047 xterm Use alternate screen buffer 1048 xterm Save/restore cursor (DECSET=save, DECRST=restore) 1049 xterm Equivalent to 1048 and 1047 combined 1070 xterm Use private color registers for each sixel 2004 xterm Wrap pasted text with start/end delimiters (bracketed paste mode) 2026 terminal-wg Application synchronized updates mode 2027 contour Grapheme cluster processing 2031 contour Request color theme updates 2033 rockorager Request terminal visibility reports. Enabling this mode immediately reports the current visibility as **CSI ? 999 ; 1|2 n**, where **1** means potentially visible and **2** means not visible. Further reports are sent whenever the visibility changes. 2048 TODO In-band window resize notifications 8452 xterm Position cursor to the right of sixels, instead of on the next line 737769 foot Input Method Editor (IME) mode

## [Window manipulation](#Window_manipulation)

Foot implements a sub-set of XTerm's (originally dtterm's) window manipulation sequences. The generic format is:

**\\E[ Ps ; Ps ; Ps t**

**Parameter 1** **Parameter 2** **Description** 11 - Report if window is iconified. Foot always reports **1** - not iconified. 13 - Report window position. Foot always reports (0,0), due to Wayland limitations. 13 2 Report text area position. Foot always reports (0,0) due to Wayland limitations. 14 - Report text area size, in pixels. Foot reports the grid size, excluding the margins. 14 2 Report window size, in pixels. Foot reports the grid size plus the margins. 15 - Report the screen size, in pixels. 16 - Report the cell size, in pixels. 18 - Report text area size, in characters. 19 - Report screen size, in characters. 20 - Report icon label. 22 - Push window title+icon. 22 1 Push window icon. 22 2 Push window title. 23 - Pop window title+icon. 23 1 Pop window icon. 23 2 Pop window title.

## [Other](#Other)

**Parameter** **Name** **Origin** **Description** \\E[ *Ps* c DA VT100 Send primary device attributes. Foot responds with "I'm a VT220 with sixel and ANSI color support". \\E[ *Ps* A CUU VT100 Cursor up - move cursor up *Ps* times. \\E[ *Ps* B CUD VT100 Cursor down - move cursor down *Ps* times. \\E[ *Ps* C CUF VT100 Cursor forward - move cursor to the right *Ps* times. \\E[ *Ps* D CUB VT100 Cursor backward - move cursor to the left *Ps* times. \\E[ *Ps* g TBC VT100 Tab clear. *Ps*=0 -&gt; clear current column. *Ps*=3 -&gt; clear all. \\E[ *Ps* ; *Ps* f HVP VT100 Horizontal and vertical position - move cursor to *row* ; *column*. \\E[ *Ps* ; *Ps* H CUP VT100 Cursor position - move cursor to *row* ; *column*. \\E[ *Ps* J ED VT100 Erase in display. *Ps*=0 -&gt; below cursor. *Ps*=1 -&gt; above \\E[ *Ps* K EL VT100 Erase in line. *Ps*=0 -&gt; right of cursor. *Ps*=1 -&gt; left of cursor. *Ps*=2 -&gt; all. \\E[ *Pm* h SM VT100 Set mode. *Pm*=4 -&gt; enable IRM (Insertion Replacement Mode). All other values of *Pm* are unsupported. \\E[ *Pm* l RM VT100 Reset mode. *Pm*=4 -&gt; disable IRM (Insertion Replacement Mode). All other values of *Pm* are unsupported. \\E[ *Ps* n DSR VT100 Device status report. *Ps*=5 -&gt; device status. *Ps*=6 -&gt; cursor position. \\E[ *Ps* L IL VT220 Insert *Ps* lines. \\E[ *Ps* M DL VT220 Delete *Ps* lines. \\E[ *Ps* P DCH VT220 Delete *Ps* characters. \\E[ *Ps* @ ICH VT220 Insert *Ps* blank characters. \\E[ *Ps* X ECH VT220 Erase *Ps* characters. \\E[ &gt; c DA2 VT220 Send secondary device attributes. Foot responds with "I'm a VT220 and here's my version number". \\E[ ! p DECSTR VT220 Soft terminal reset. \\E[ ? *Ps* $ p DECRQM VT320 Request status of DEC private mode. The *Ps* parameter corresponds to one of the values mentioned in the "Private Modes" section above (as set with DECSET/DECRST). \\E[ *Ps* $ p DECRQM VT320 Request status of ECMA-48/ANSI mode. See the descriptions for SM/RM above for recognized *Ps* values. \\E[ *Pt* ; *Pl* ; *Pb* ; *Pr* ; *Pm* $ r DECCARA VT400 Change attributes in rectangular area. *Pt*, *Pl*, *Pb* and *Pr* denotes the rectangle, *Pm* denotes the SGR attributes. \\E[ *Pt* ; *Pl* ; *Pb* ; *Pr* ; *Pm* $ t DECRARA VT400 Invert attributes in rectangular area. *Pt*, *Pl*, *Pb* and *Pr* denotes the rectangle, *Pm* denotes the SGR attributes. \\E[ *Pt* ; *Pl* ; *Pb* ; *Pr* ; *Pp* ; *Pt* ; *Pl* ; *Pp* $ v DECCRA VT400 Copy rectangular area. *Pt*, *Pl*, *Pb* and *Pr* denotes the rectangle, *Pt* and *Pl* denotes the target location. \\E[ *Pc* ; *Pt* ; *Pl* ; *Pb* ; *Pr* $ x DECFRA VT420 Fill rectangular area. *Pc* is the character to use, *Pt*, *Pl*, *Pb* and *Pr* denotes the rectangle. \\E[ *Pt* ; *Pl* ; *Pb* ; *Pr* $ z DECERA VT400 Erase rectangular area. *Pt*, *Pl*, *Pb* and *Pr* denotes the rectangle. \\E[ *Ps* T SD VT420 Scroll down *Ps* lines. \\E[ s SCOSC SCO, VT510 Save cursor position. \\E[ u SCORC SCO, VT510 Restore cursor position. \\E[ *Ps* SP q DECSCUSR VT510 Set cursor style. In foot, *Ps*=0 means "use style from foot.ini". \\E[ = *Ps* c DA3 VT510 Send tertiary device attributes. Foot responds with "FOOT", in hexadecimal. \\E[ *Pm* d VPA ECMA-48 Line position absolute - move cursor to line *Pm*. \\E[ *Pm* e VPR ECMA-48 Line position relative - move cursor down *Pm* lines. \\E[ *Pm* a HPR ECMA-48 Character position relative - move cursor to the right *Pm* times. \\E[ *Ps* E CNL ECMA-48 Cursor next line - move the cursor down *Ps* times. \\E[ *Ps* F CPL ECMA-48 Cursor preceding line - move the cursor up *Ps* times. \\E[ *Pm* \` HPA ECMA-48 Character position absolute - move cursor to column *Pm*. \\E[ *Ps* G CHA ECMA-48 Cursor character absolute - move cursor to column *Ps*. cursor. *Ps*=2 -&gt; all. *Ps*=3 -&gt; saved lines. \\E[ *Ps* S SU ECMA-48 Scroll up *Ps* lines. \\E[ *Ps* I CHT ECMA-48 Cursor forward tabulation *Ps* tab stops. \\E[ *Ps* Z CBT ECMA-48 Cursor backward tabulation *Ps* tab stops. \\E[ *Ps* b REP ECMA-48 Repeat the preceding printable character *Ps* times. \\E[ ? *Pi* ; *Pa* ; *Pv* S XTSMGRAPHICS xterm Set or request sixel attributes. \\E[ &gt; *Ps* q XTVERSION xterm *Ps*=0 -&gt; report terminal name and version, in the form **\\EP&gt;|foot(version)\\E\\**. \\E[ &gt; 4 ; *Pv* m XTMODKEYS xterm Set level of the *modifyOtherKeys* property to *Pv*. Note that foot only supports level 1 and 2, where level 1 is the default setting. \\E[ ? *Pp* m XTQMODKEYS xterm Query key modifier options \\E[ &gt; 4 n &lt;unnamed&gt; xterm Resets the *modifyOtherKeys* property to level 1. Note that in foot, this sequence does not completely disable *modifyOtherKeys*, since foot only supports level 1 and level 2 (and not level 0). \\E[ ? u &lt;unnamed&gt; kitty Query current values of the Kitty keyboard flags. \\E[ &gt; *flags* u &lt;unnamed&gt; kitty Push a new entry, *flags*, to the Kitty keyboard stack. \\E[ &lt; *number* u &lt;unnamed&gt; kitty Pop *number* of entries from the Kitty keyboard stack. \\E[ = *flags* ; *mode* u &lt;unnamed&gt; kitty Update current Kitty keyboard flags, according to *mode*. \\E[ # P XTPUSHCOLORS xterm Push current color palette onto stack \\E[ # Q XTPOPCOLORS xterm Pop color palette from stack \\E[ # R XTREPORTCOLORS xterm Report the current entry on the palette stack, and the number of palettes stored on the stack. \\E[ ? 996 n Query the current (color) theme mode contour The current color theme mode (light or dark) is reported as **CSI ? 997 ; 1|2 n**, where **1** means dark and **2** light. By convention, the primary theme in foot is considered dark, and the alternative theme light. \\E[ ? 998 n Query terminal visibility rockorager The current terminal visibility is reported as **CSI ? 999 ; 1|2 n**, where **1** means potentially visible and **2** means not visible. This does not enable private mode 2033.

# [OSC](#OSC)

All *OSC* sequences begin with **\\E]**, sometimes abbreviated *OSC*.

**Sequence** **Origin** **Description** \\E] 0 ; *Pt* \\E\\ xterm Set window icon and title to *Pt*. \\E] 1 ; *Pt* \\E\\ xterm Set window icon to *Pt*. \\E] 2 ; *Pt* \\E\\ xterm Set window title to *Pt* \\E] 4 ; *c* ; *spec* \\E\\ xterm Change color number *c* to *spec*, where *spec* is a color in XParseColor format. foot only supports RGB colors; either **rgb:&lt;red&gt;/&lt;green&gt;/&lt;blue&gt;**, or the legacy format (**#rgb**). \\E] 7 ; *Uri* \\E\\ iTerm2 Update the terminal's current working directory. Newly spawned terminals will launch in this directory. *Uri* must be in the format **file://&lt;hostname&gt;/&lt;path&gt;**. **hostname** must refer to your local host. \\E] 8 ; id=*ID* ; *Uri* \\E\\ VTE+iTerm2 Hyperlink (a.k.a HTML-like anchors). id=*ID* is optional; if assigned, all URIs with the same *ID* will be treated as a single hyperlink. An empty URI closes the hyperlink. \\E] 9 ; *msg* \\E\\ iTerm2 Desktop notification, uses **notify** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5). \\E] 10 ; *spec* \\E\\ xterm Change the default foreground color to *spec*, a color in XParseColor format. \\E] 11 ; *spec* \\E\\ xterm Change the default background color to *spec*, a color in XParseColor format. Foot implements URxvt's transparency extension; e.g. *spec*=**\[75]#ff00ff** or *spec*=**rgba:ff/00/ff/bf** (pink with 75% alpha). \\E] 12 ; *spec* \\E\\ xterm Change cursor color to *spec*, a color in XParseColor format. \\E] 17 ; *spec* \\E\\ xterm Change selection background color to *spec*, a color in XParseColor format. \\E] 19 ; *spec* \\E\\ xterm Change selection foreground color to *spec*, a color in XParseColor format. \\E] 22 ; *xcursor-pointer-name* \\E\\ xterm Sets the xcursor pointer. An empty name, or an invalid name resets it. \\E] 52 ; *Pc* ; ? \\E\\ xterm Send clipboard data. *Pc* can be either **c**, **s** or **p**. **c** uses the clipboard as source, and **s** and **p** uses the primary selection. The response is **\\E] 52 ; Pc ; &lt;base64-encoded data&gt; E\\**, where *Pc* denotes the source used. \\E] 52 ; *Pc* ; *Pd* \\E\\ xterm Copy *Pd* (base64 encoded text) to the clipboard. *Pc* denotes the target: **c** targets the clipboard and **s** and **p** the primary selection. \\E] 66 ; *params* ; text \\E\\ kitty Text sizing protocol (only 'w', width, supported) \\E] 99 ; *params* ; *payload* \\E\\ kitty Desktop notification; uses **desktop-notifications.command** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5). \\E] 104 ; *c* \\E\\ xterm Reset color number *c* (multiple semicolon separated *c* values may be provided), or all colors (excluding the default foreground/background colors) if *c* is omitted. \\E] 110 \\E\\ xterm Reset default foreground color \\E] 111 \\E\\ xterm Reset default background color \\E] 112 \\E\\ xterm Reset cursor color \\E] 117 \\E\\ xterm Reset selection background color \\E] 119 \\E\\ xterm Reset selection foreground color \\E] 133 ; A \\E\\ FinalTerm Mark start of shell prompt \\E] 133 ; C \\E\\ FinalTerm Mark start of command output \\E] 133 ; D \\E\\ FinalTerm Mark end of command output \\E] 176 ; *app-id* \\E\\ foot Set app ID. *app-id* is optional; if assigned, the terminal window App ID will be set to the value. An empty App ID resets the value to the default. \\E] 555 \\E\\ foot Flash the entire terminal (foot extension) \\E] 777;notify;*title*;*msg* \\E\\ urxvt Desktop notification, uses **desktop-notifications.command** in [**foot.ini**(5)](/man/enterprise-packages/foot/foot.ini.5).

# [DCS](#DCS)

All *DCS* sequences begin with **\\EP** (sometimes abbreviated *DCS*), and are terminated by **\\E\\** (ST).

**Sequence** **Description** \\EP q &lt;sixel data&gt; \\E\\ Emit a sixel image at the current cursor position \\EP $ q &lt;query&gt; \\E\\ Request selection or setting (DECRQSS). Implemented queries: DECSTBM, SGR and DECSCUSR. \\EP = *C* s \\E\\ Begin (*C*=**1**) or end (*C*=**2**) application synchronized updates. This sequence is supported for compatibility reasons, but it's recommended to use private mode 2026 (see above) instead. \\EP + q &lt;hex encoded capability name&gt; \\E\\ Query builtin terminfo database (XTGETTCAP)

# [FOOTNOTE](#FOOTNOTE)

Foot does not support 8-bit control characters ("C1").

2026-10-26

---

Document: foot-ctlseqs(7) from foot 1.28.0-r2 (Chainguard OS)
Source: https://codeberg.org/dnkl/foot
