Skip to content

Kitty

App Terminal + Parser Backend

Kitty's VT parser via Python subprocess bridge (kitty +runpy).

Kitty was created by Kovid Goyal and first released in 2017. Written in C and Python with OpenGL GPU rendering, it was one of the first terminals to use the GPU for text rendering, achieving smooth scrolling and low latency that traditional CPU-rendered terminals couldn't match.

Kitty's most lasting contribution to the terminal ecosystem is the Kitty keyboard protocol (CSI u), which solves decades-old ambiguity in how terminals encode keypresses. The protocol has since been adopted by Ghostty, WezTerm, foot, and others. Kitty also pioneered the Kitty graphics protocol for inline image display and introduced extended underline styles (curly, dotted, dashed) with independent underline colors — features now standard in modern terminals.

Kitty supports a rich extension ecosystem through "kittens" — small Python programs that run inside the terminal. Notable kittens include an image viewer, SSH integration, and a diff viewer. The terminal also features native tab and window management, remote control via IPC, and extensive Unicode support.

Backend: Kitty's VT parser via Python subprocess bridge (kitty +runpy). (native) · v0.40.0
64%
150 passed · 52 partial · 31 failed of 233 features
Tested: April 10, 2026
Analysis2026-04-06

Kitty scores 87% (219/251) on the terminfo.dev feature matrix, with gaps in the Core TUI, Modern TUI, Rich TUI, Unicode baselines. Ranks #7 of 12 tested terminals. Missing 32 features.

Character Sets

FeatureSupportNotes
DEC line drawing character set✓ yes
DEC Special Graphics✓ yes
G0/G1 character set switching✓ yes
UTF-8 mode✓ yes

Device Status

FeatureSupportNotes
Mode Report (DECRPM)~ partialHeadless mode has no output stream for DECRPM responses
Request Setting (DECRQSS)~ partialHeadless mode has no output stream for DECRQSS responses
DSR ?996 — color scheme query? unknown
COLORTERM env variable? unknown
KITTY_* env variables? unknown
LC_TERMINAL env variable? unknown
NO_COLOR env variable? unknown
TERM env variable? unknown
TERM_PROGRAM env variable? unknown
VTE_VERSION env variable? unknown
WEZTERM_* env variables? unknown
WT_SESSION env variable? unknown
Primary device attributes (DA1)~ partialHeadless mode has no output stream for DA1 responses
Secondary Device Attributes (DA2)~ partialHeadless mode has no output stream for DA2 responses
Device status report (DSR 5)~ partialHeadless mode has no output stream for DSR responses
Feature Reporting (TERM_FEATURES)? unknown
Tertiary Device Attributes (DA3)~ partialHeadless mode has no output stream for DA3 responses
Query Terminfo (XTGETTCAP)~ partialHeadless mode has no output stream for XTGETTCAP responses
XTGETXRES — query resource value (DCS + Q)✗ noXTGETXRES resource query — xterm-specific
XTREPORTCOLORS — report color capabilities (CSI # R)✗ noXTREPORTCOLORS (xterm patch 401+) not yet adopted outside xterm
Terminal Version (XTVERSION)~ partialHeadless mode has no output stream for XTVERSION responses
Report window size in pixels (CSI 14 t)~ partialWindow operations not exposed via Python batch bridge
Report cell size in pixels (CSI 16 t)~ partialWindow operations not exposed via Python batch bridge
Report text area size in chars (CSI 18 t)~ partialWindow operations not exposed via Python batch bridge
Report icon label (CSI 20 t)~ partialWindow operations not exposed via Python batch bridge
Report window title (CSI 21 t)~ partialWindow operations not exposed via Python batch bridge
Push title/icon stack (CSI 22 ; 0 t)~ partialTitle stack not exposed via Python batch bridge
Pop title/icon stack (CSI 23 ; 0 t)~ partialTitle stack not exposed via Python batch bridge

Editing

FeatureSupportNotes
DECCARA — change attrs in rectangle✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
DECCRA — copy rectangular area✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
DECDC — delete columns (CSI Ps ' ~)✗ noColumn editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps
DECERA — erase rectangular area✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
DECFRA — fill rectangular area✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
DECIC — insert columns (CSI Ps ' })✗ noColumn editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps
DECRARA — reverse attrs in rectangle✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
DECRQCRA — checksum rectangular area✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
DECSACE — select attribute-change extent✓ yes
DECSERA — selective erase rectangular area✗ noVT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals
Delete characters (DCH)✓ yes
Delete lines (DL)✓ yes
Insert characters (ICH)✓ yes
Insert lines (IL)✓ yes
Repeat character (REP)✓ yes
SL — shift left (CSI Ps SP @)✗ noColumn editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps
SR — shift right (CSI Ps SP A)✗ noColumn editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps

Extensions

FeatureSupportNotes
System clipboard paste? unknown
Font ligatures? unknown
iTerm2 Inline Images (OSC 1337)✗ noiTerm2 inline images not supported — Kitty uses its own graphics protocol
Kitty graphics protocol✓ yes
Kitty graphics: animation✓ yes
Kitty graphics: display✓ yes
Kitty graphics: transmit✓ yes
Kitty graphics: Unicode placeholders✓ yes
Kitty keyboard protocol✓ yes
Kitty keyboard: DISAMBIGUATE (flag 1)✓ yes
Kitty keyboard: REPORT_ALL_KEYS (flag 8)✓ yes
Kitty keyboard: REPORT_ALTERNATE (flag 4)✓ yes
Kitty keyboard: REPORT_EVENTS (flag 2)✓ yes
Kitty keyboard: REPORT_TEXT (flag 16)✓ yes
Desktop Notifications (OSC 9/777)~ partialOSC 9 notifications not exposed via Python batch bridge
VS Code Shell Integration (OSC 633)~ partialOSC 633 not exposed via Python batch bridge
Icon and title (OSC 0)✓ yes
Icon name (OSC 1)✓ yes
Foreground color query (OSC 10)~ partialOSC 10 color query not exposed via Python batch bridge
Reset color palette (OSC 104)✗ noOSC 104 color reset requires a real display — headless backends have no color palette to reset
Background color query (OSC 11)~ partialOSC 11 color query not exposed via Python batch bridge
Reset foreground color (OSC 110)✗ noOSC 110 foreground reset requires a real display — headless backends have no color palette to reset
Reset background color (OSC 111)✗ noOSC 111 background reset requires a real display — headless backends have no color palette to reset
Reset cursor color (OSC 112)✗ noOSC 112 cursor color reset requires a real display — headless backends have no color palette to reset
Reset pointer fg color (OSC 113)? unknown
Reset pointer bg color (OSC 114)? unknown
Reset highlight background (OSC 117)✓ yes
Reset highlight foreground (OSC 119)✓ yes
Cursor color (OSC 12)✗ noOSC 12 cursor color query requires a real display — headless backends have no color palette to query
OSC 133;A prompt start (FTCS_PROMPT)✓ yes
OSC 133;B command start (FTCS_COMMAND_START)✓ yes
OSC 133;C command executed (FTCS_COMMAND_EXECUTED)✓ yes
OSC 133;D command finished (FTCS_COMMAND_FINISHED)✓ yes
OSC 133;P properties✓ yes
iTerm2 Capability Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported by kitty
iTerm2 Cell Size Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported by kitty
Highlight background (OSC 17)✗ noOSC 17 highlight background query requires a real display — headless backends have no color palette to query
Set Wayland app-id (OSC 176)? unknown
Highlight foreground (OSC 19)✗ noOSC 19 highlight foreground query requires a real display — headless backends have no color palette to query
Window title (OSC 2)✓ yes
Kitty color protocol (OSC 21)~ partialOSC 21 query responses not exposed via Python batch bridge
Pointer shape (OSC 22)? unknown
Kitty color stack push (OSC 30001)? unknown
Systemd context (OSC 3008)? unknown
Kitty color stack pop (OSC 30101)? unknown
Color palette (OSC 4)✗ noOSC 4 color query requires a real display — headless backends have no color palette to query
Audio sound (OSC 440)? unknown
Special color (OSC 5)✗ noOSC 5 special color query requires a real display — headless backends have no color palette to query
Clipboard access (OSC 52)~ partialOSC 52 clipboard not exposed via Python batch bridge
OSC 52 clipboard read~ partialOSC 52 clipboard read not exposed via Python batch bridge
OSC 52 clipboard write✓ yes
OSC 5522 advanced clipboard~ partialOSC 5522 not exposed via Python batch bridge
Screen flash (OSC 555)? unknown
OSC 633;A prompt start✓ yes
OSC 633;B prompt end✓ yes
OSC 633;C pre-execution✓ yes
OSC 633;D command finished✓ yes
OSC 633;E set commandline✓ yes
OSC 633;P properties✓ yes
OSC 66 text sizing~ partialOSC 66 not exposed via Python batch bridge — kitty supports it natively
VTE termprop (OSC 666)? unknown
Current directory (OSC 7)~ partialOSC 7 CWD reporting not exposed via Python batch bridge
Locale query/set (OSC 701)? unknown
Version query (OSC 702)? unknown
Set normal font (OSC 710)? unknown
Scroll view up (OSC 720)? unknown
Cell size report (OSC 776)? unknown
Notifications (OSC 777)? unknown
Font size query/set (OSC 7770)? unknown
Font + window size (OSC 7777)? unknown
Hyperlinks (OSC 8)✓ yes
OSC 9;4 progress bar? unknown
Desktop notifications (OSC 99)? unknown
Text reflow on resize✓ yes
Semantic prompts (OSC 133)~ partialOSC 133 not exposed via Python batch bridge
Sixel graphics✗ noDeclined by maintainer — kitty uses its own graphics protocol instead of sixel
Sixel support in DA1✗ noSixel not supported by kitty — uses its own graphics protocol
Sixel geometry report (CSI ? Pi;Pa;Pv S)✗ noSixel geometry report not supported
24-bit truecolor✓ yes

Input Protocols

FeatureSupportNotes
Button-Event Mouse (1002)~ partialButton-event mouse tracking not exposed via headless API
CSI u Key Encoding✓ yes
Kitty click events? unknown
modifyOtherKeys~ partialmodifyOtherKeys not exposed via Python batch bridge
modifyOtherKeys mode 3~ partialmodifyOtherKeys mode 3 not exposed via Python batch bridge
Pixel Mouse Reporting (1016)~ partialSGR pixel mouse mode not exposed via Python batch bridge
urxvt Mouse Reporting (1015)✗ nourxvt mouse mode (?1015) not implemented in kitty
X10 Mouse Tracking (9)✗ noX10 mouse mode (?9) not implemented in kitty

Modes

FeatureSupportNotes
Enter alt screen (DECSET 1049)✓ yes
Exit alt screen (DECRST 1049)✓ yes
Alt-scroll mouse wheel (?1007)✓ yes
Alt screen clear-on-enter (?1047)✓ yes
Save/restore cursor (?1048)~ partial?1048 save/restore cursor not exposed via Python batch bridge
Alt screen legacy (?47)✓ yes
App cursor keys (DECCKM)✓ yes
Application keypad (DECKPAM)~ partialNot exposed via Python batch bridge
Auto-wrap (DECAWM)✓ yes
Bracketed paste (DECSET 2004)✓ yes
Mode 2031 color scheme reporting~ partialMode 2031 not exposed via Python batch bridge
DECCOLM 80/132 column switch (?3)✓ yes
DECSCLM — smooth scroll mode? unknown
DECSSCLS — set scroll speed? unknown
Focus tracking (DECSET 1004)✓ yes
Insert/replace mode (IRM)~ partialNot exposed via Python batch bridge
Left/Right Margins (DECLRMM, Mode 69)~ partialDECLRMM not exposed via Python batch bridge
All motion mouse (DECSET 1003)~ partialAll-motion mouse tracking not exposed via Python batch bridge
SGR mouse mode (DECSET 1006)~ partialSGR mouse encoding not exposed via Python batch bridge
Mouse tracking (DECSET 1000)~ partialNot exposed via Python batch bridge
Origin mode (DECOM)~ partialNot exposed via Python batch bridge
Reverse video (DECSCNM)~ partialNot exposed via Python batch bridge
Synchronized output (DECSET 2026)✓ yes
UTF-8 mouse mode (?1005)✓ yes
Pop color palette (CSI # Q)~ partialColor palette stack not exposed via Python batch bridge
XTPOPSGR — pop SGR stack (CSI # })~ partialSGR stack not exposed via Python batch bridge
Push color palette (CSI # P)~ partialColor palette stack not exposed via Python batch bridge
XTPUSHSGR — push SGR stack (CSI # {)~ partialSGR stack not exposed via Python batch bridge
XTRESTORE — restore DEC private modes (CSI ? Pm r)~ partialXTRESTORE private mode restore not exposed via Python batch bridge
XTSAVE — save DEC private modes (CSI ? Pm s)~ partialXTSAVE private mode save not exposed via Python batch bridge

Reset

FeatureSupportNotes
DECALN screen alignment (ESC # 8)✓ yes
Backend reset() method✓ yes
Full reset (RIS)✓ yes
SGR reset clears attributes✓ yes
Soft reset (DECSTR)~ partialDECSTR resets modes but headless probe reads stale state