Skip to content

External Protocols

Extensions to the VT vocabulary adopted from other terminals. These ride on the underlying byte stream but define their own structured payloads.

OSC-based

Most external protocols are layered on OSC because OSC supports arbitrary string payloads with a clean string-terminator.

ProtocolOSCOriginOttyDoc
HyperlinksOSC 8xterm / VTEOSC 8
Shell IntegrationOSC 133FinalTerm / iTerm2Shell Integration
Working DirectoryOSC 7VTEFiles and Links
NotificationsOSC 9iTerm2Notifications
Notifications (rich)OSC 777urxvtNotifications
ClipboardOSC 52xterm✓ (opt-in)Copy and Paste
Inline Image (iTerm)OSC 1337iTerm2Images

DCS / APC-based

ProtocolIntroducerOriginOttyDoc
Kitty graphicsAPC (ESC _)Kitty✓ (mostly)Images
Sixel graphicsDCS (ESC P)DEC☐ planned
tmux passthroughDCStmux

CSI-based

ProtocolSequenceOriginOtty
Kitty keyboard protocolCSI > 1 u / CSI < uKitty
Bracketed pasteCSI ?2004 h/lxterm
Focus reportingCSI ?1004 h/lCSI I / CSI Oxterm
Synchronized outputCSI ?2026 h/liTerm2✓ (buffered, with a safety timeout)
SGR mouse reportingCSI ?1006 h/lxterm
Scroll-then-erase EDCSI 22 JKitty

Conformance notes

  • OSC 133 follows the FinalTerm "FTCS" spec as adopted by iTerm2.
  • Where iTerm2 and xterm differ on the same OSC number, Otty implements iTerm2's semantics (the more common modern target).

Identification

SequenceOriginOtty
CSI c — Primary DADEC✓ (responds ?62;22c)
CSI > c — Secondary DADEC
CSI > q — XTVERSIONxterm✓ (replies DCS > | otty(<version>) ST)

See also

Otty