^[control-codes
live in libghostty-vt

Operating system commands

OSC 18 Tektronix Cursor Color

View as Markdown

Set and query the color of the cursor in xterm's Tektronix 4014 window.

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

OSC 18 ; Pt ST sets the color of the cursor in xterm’s Tektronix 4014 window, and OSC 18 ; ? ST asks what it is. OSC 118 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 19.

The Tektronix colors belong to xterm’s second window, which emulates a Tektronix 4014 graphics terminal and is opened from a menu or with CSI ? 38 h. They can be set and asked for whether or not that window is showing.

A default xterm starts it as the text cursor’s color (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 no such color, and ignores OSC 18 and OSC 118, 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-411aYes
libghostty-vt0f171f6Noignored
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

OSC18-1: Ask for it

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

OSC18-2: Change it

\e]18;#0080ff\a
\e]18;?\a
|____|
reply \e]18;rgb:0000/8080/ffff\a
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.