^[control-codes
live in libghostty-vt

Operating system commands

OSC R Reset Palette (Linux)

View as Markdown

Put the palette back, as the Linux console does.

OSC R ST
ECMA-48
§8.3.89 OSC – Operating System Command, p. 51
Specification
console_codes(4), Linux manual pages

OSC R ST puts the Linux console’s sixteen colors back as they started, undoing OSC P. OSC 104 is the way to do the same in xterm and the terminals that follow it.

The Linux console’s own definition, in console_codes(4), has no terminator: ESC ] P takes exactly seven hex digits after it, and ESC ] R none at all. A terminal that reads them as ordinary OSCs, which run until ST or BEL, swallows whatever follows one sent the console’s way, until something ends the string.

xterm, built for Linux, knows the console’s form, under its brokenLinuxOSC resource, on by default. Once an OSC string begins with P and has seven more characters, or begins with R and has one more, the next character abandons it: xterm rings the bell and handles that character as if no string had begun (charproc.c, illegal_parse). So sent the console’s way, neither swallows anything. Sent as an OSC, ended with ST, each still rings the bell, since the ESC of the ST is the character that abandons it. Either way no color changes. libghostty-vt reads them as ordinary OSCs and ignores them, with no bell, so the cases are known differences.

Support

TerminalVersionSupportNotes
VT220manual, 2nd ed., 1984NoOSC is not among the controls it recognizes (§4.2)
VT510manual, 1st ed., 1993Noignores an OSC string (chapter 4)
xtermpatch 412, xterm-411aPartlyknows its length, under brokenLinuxOSC: after R and one more it abandons the string and rings the bell; no color changes
libghostty-vt0f171f6Noignored
Konsole26.11.70, a24c3d71Noa letter where the number should be is a decoding error
ConEmubuild 230724, its documentationNonot in its ANSI escape codes
Linux consoleman-pages 6.19, console_codes(4)Yeswith no terminator, console_codes(4)

Validation

OSC-R-1: It does not reset the palette, and rings the bell

\e]4;1;red\a
\e]R\e\\
\e]4;1;?\a
|______|
reply \e]4;1;rgb:ffff/0000/0000\a
bell 1

OSC-R-2: Without a terminator, the text after it is printed

\e]R    # the console's way
AB      # the A abandons the string
|AB____|
cursor 1,3
bell 1
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.