^[control-codes live in libghostty-vt

Operating system commands

OSC 12 Text Cursor Color

Set and query the color of the text cursor.

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

OSC 12 ; Pt ST sets the color of the text cursor, and OSC 12 ; ? ST asks what it is. OSC 112 puts it back as it started. It is one of xterm’s dynamic colors, and works as OSC 10 explains: Pt is any color X11 can parse, and a further ; in the same sequence moves on to color 13.

A default xterm starts it as the cursorColor resource, which is the foreground (charproc.c), so in the terminal the cases run in, set up as a default xterm, it is reported as rgb:0000/0000/0000.

libghostty-vt has it, and agrees with xterm.

Validation

OSC12-1: Ask for it

\e]12;?\a
|____|
reply \e]12;rgb:0000/0000/0000\a

OSC12-2: Change it

\e]12;#0080ff\a
\e]12;?\a
|____|
reply \e]12;rgb:0000/8080/ffff\a

OSC12-3: A chain past the cursor

\e]12;?;?\a  # the cursor, then the pointer
|____|
reply \e]12;rgb:0000/0000/0000\a\e]13;rgb:0000/0000/0000\a
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.