OSC 10 Text Foreground Color
Set, query and reset the default foreground color.
OSC 10 ; Pt ST
OSC 10 ; Pt ST sets the default foreground, the color of text that has no SGR color of its own, and OSC 10 ; ? ST asks what it is. OSC 110 puts it back as it started.
It is the first of xterm’s ten dynamic colors, each with its own OSC number, apart from the 256 colors of the palette:
Ps | Color | Reset |
|---|---|---|
10 | the default foreground, used by text with no SGR color | 110 |
11 | the default background, behind text with no SGR background color | 111 |
12 | the text cursor | 112 |
13 | the mouse pointer, while it is over the window | 113 |
14 | the mouse pointer’s outline, the part of an X cursor drawn in its second color | 114 |
15 | what is drawn in xterm’s Tektronix 4014 window | 115 |
16 | the background of xterm’s Tektronix 4014 window | 116 |
17 | the background of selected text | 117 |
18 | the cursor in xterm’s Tektronix 4014 window | 118 |
19 | selected text | 119 |
They all work alike:
OSC Ps ; Pt STsets colorPstoPt, in any form X11’sXParseColoraccepts: a name such asred,#rrggbb, orrgb:rr/gg/bb.Ptof?asks for it. The answer isOSC Ps ; rgb:rrrr/gggg/bbbb, sixteen bits a part, ended with whichever of ST or BEL ended the question.- A sequence can carry more than one color. Each further
;moves on to the next number, soOSC 10 ; red ; blue STsets the foreground and the background, andOSC 10 ; ? ; ? STasks for both. An empty one is skipped, soOSC 10 ; ; blue STsets only the background (ChangeColorsRequest,ReportColorRequest). OSC 1Ps ST, that isOSC 110 STtoOSC 119 ST, puts colorPsback as it started (ResetColorsRequest).- Neither DECSTR nor RIS resets them, unlike the palette.
A program asks for the background, OSC 11 ; ? ST, to find out whether it is running on a light or a dark terminal and choose its own colors to suit.
Where these colors start is the host’s choice. The cases are run in a terminal given a default xterm’s: black text on white, with the cursor and the mouse pointer in the foreground color (charproc.c). That is what the answers below report; it is not how this site draws the screens.
libghostty-vt has 10, 11 and 12, and 110 to 112. It ignores the rest, so a chain of questions that runs past 12 stops there. It also passes over an empty color without moving on to the next number, so OSC 10 ; ; blue ST sets its foreground. That case is a known difference.
Validation
OSC10-1: Ask for the foreground
\e]10;?\a
|____|
reply \e]10;rgb:0000/0000/0000\a
OSC10-2: Change it
\e]10;#ff8000\a
\e]10;?\a
|____|
reply \e]10;rgb:ffff/8080/0000\a
OSC10-3: Each ; moves to the next color
\e]10;red;blue\a
\e]10;?;?\a
|____|
reply \e]10;rgb:ffff/0000/0000\a\e]11;rgb:0000/0000/ffff\a
OSC10-4: An empty one is skipped
\e]10;;blue\a
\e]10;?;?\a
|____|
reply \e]10;rgb:0000/0000/0000\a\e]11;rgb:0000/0000/ffff\a
OSC10-5: Questions and changes together
\e]10;?;red\a # ask for 10, set 11
\e]11;?\a
|____|
reply \e]10;rgb:0000/0000/0000\a\e]11;rgb:ffff/0000/0000\a