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
| Terminal | Version | Support | Notes |
|---|---|---|---|
| VT220 | manual, 2nd ed., 1984 | No | OSC is not among the controls it recognizes (§4.2) |
| VT510 | manual, 1st ed., 1993 | No | ignores an OSC string (chapter 4) |
| xterm | patch 412, xterm-411a | No | the number is set aside for Konsole, unused |
| libghostty-vt | 83edd49 | No | ignored |
| Konsole | 26.11.70, a24c3d71 | No | gone from SessionAttributes; it uses OSC 7 instead |
| ConEmu | build 230724, its documentation | No | not 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