^[control-codes
live in libghostty-vt

Operating system commands

OSC 5 Change Special Color

View as Markdown

Set and query the colors xterm can draw bold, underlined, blinking, reversed and italic text in.

OSC 5 ; Pc ; Pt ST
ECMA-48
§8.3.89 OSC – Operating System Command, p. 51
xterm
Operating System Commands

Besides the palette, xterm has five special colors, which it can use to show an attribute as a color instead of, or as well as, the attribute itself:

PcResourceUsed for
0colorBDbold
1colorULunderline
2colorBLblink
3colorRVreverse
4colorITitalic

OSC 5 ; Pc ; Pt ST sets one, Pt of ? asks for it, and OSC 105 ; Pc ST puts it back, exactly as OSC 4 and OSC 104 do for the palette; they are also palette numbers 256 to 260, so OSC 4 ; 256 ; ? ST asks for the bold color too (do_osc, ReportAnsiColorRequest). Each is used only when its mode is on, which OSC 6 turns on and off, and all five modes are off by default. Each starts as the default foreground (charproc.c), so in a terminal set up as a default xterm, as the cases are, each is reported as black.

libghostty-vt has no special colors, and ignores OSC 5 and palette numbers past 255, so the cases that ask 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-411aYesused only when OSC 6 turns each on
libghostty-vt0f171f6Nono special colors (OSC5-1, OSC5-2)
Konsole26.11.70, a24c3d71Nonot in its source
kitty0.49.1, run in a VMNofails the case that shows it working
foot1.28.0, run in a VMNofails the case that shows it working
pyte0.8.2, run as a libraryNofails the case that shows it working
xterm.js headless6.0.0, run as a libraryNofails the case that shows it working
alacritty_terminal0.26.0, run as a libraryNofails the case that shows it working
ConEmubuild 230724, its documentationNonot in its ANSI escape codes
rxvt-unicode9.31, run in a VMNofails the case that shows it working
VTE0.84.1, run as a libraryNofails the case that shows it working

Validation

OSC5-1: The color for bold

\e]5;0;?\a
|______|
reply \e]5;0;rgb:0000/0000/0000\a

OSC5-2: Set, and asked for through OSC 4

\e]5;1;#ff0000\a    # the color for underline
\e]4;257;?\a
|______|
reply \e]4;257;rgb:ffff/0000/0000\a

OSC5-3: Nothing on screen

A
\e]5;0;red\a
B
|AB____|
cursor 1,3
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.