^[control-codes live in libghostty-vt

Operating system commands

OSC 31 Working Directory (old Konsole)

Tell Konsole the shell's working directory, as Konsole once read it.

OSC 31 ; Pt ST
ECMA-48
§8.3.89 OSC – Operating System Command, p. 51
Specification
Session::SessionAttributes, Konsole's source

OSC 31 ; dir ST once told Konsole the shell’s working directory, so that it could bookmark it and remember it when the session was saved, on systems where it could not read the directory from the process itself. Konsole’s tips suggested putting \e]31;\w\a in bash’s prompt. The tip is gone, and so is the number: today’s Konsole takes the working directory from OSC 7, which its source credits to VTE (Session.h). The old tip survives in Konsole’s translation files, among the obsolete strings.

Konsole, KDE’s terminal, has a few OSC numbers of its own. It documents none of them, so the definition is its source: the numbers are listed in Session::SessionAttributes, and acted on in Session::setSessionAttribute. They are OSC 30, OSC 32 and OSC 34, with a profile change under OSC 50, and once OSC 31.

xterm sets 30 and 31 aside for Konsole and does nothing with either (misc.c). libghostty-vt has no Konsole code, and ignores it too.

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-411aNothe number is set aside for Konsole, unused
libghostty-vt83edd49Noignored
Konsole26.11.70, a24c3d71Nogone from SessionAttributes; it uses OSC 7 instead
ConEmubuild 230724, its documentationNonot in its ANSI escape codes

Validation

OSC31-1: Not a working directory

\e]31;/tmp\a
|___|
pwd ""

OSC31-2: Nothing on screen

A
\e]31;/tmp\a
B
|AB_|
cursor 1,3
reply none
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.