Skip to content

WezTerm

App Terminal + Parser Backend

wezterm-term Rust crate via napi-rs.

WezTerm is a cross-platform terminal emulator and multiplexer written in Rust by Wez Furlong, a veteran systems engineer known for his work on PHP internals, Mercurial, and the Watchman file watcher at Facebook. First released in 2018, WezTerm reflects Furlong's philosophy of building practical, feature-complete tools — unlike Alacritty's minimalism, WezTerm is batteries-included, replacing tmux/screen with built-in tabs, splits, and remote session management.

WezTerm's most distinctive feature is its Lua-based configuration. Where most terminals use static YAML or TOML, WezTerm's config is a full Lua program — enabling dynamic keybindings, conditional themes, complex layouts, and event-driven behavior. Its SSH domain multiplexing with auto-reconnection lets terminal sessions survive network drops and resume transparently, a feature rarely found outside dedicated SSH tools like Mosh.

WezTerm supports the kitty keyboard protocol, kitty graphics protocol, sixel, OSC 8 hyperlinks, and extensive Unicode support including grapheme clustering. The wezterm-term Rust crate provides the terminal emulation core, which Termless uses as a headless backend for cross-terminal testing.

Backend: wezterm-term Rust crate via napi-rs. (native) · v0.1.0-fork.5
61%
142 passed · 48 partial · 43 failed of 233 features
Tested: April 10, 2026
Analysis2026-04-06

WezTerm scores 88% (199/227) on the terminfo.dev feature matrix, with gaps in the Core TUI, Modern TUI, Rich TUI, Unicode baselines. Ranks #6 of 12 tested terminals. Missing 28 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 pixel-size report requires a real window system
Report cell size in pixels (CSI 16 t)~ partialCell pixel-size report requires a real window system
Report text area size in chars (CSI 18 t)~ partialText area size report not exposed in headless mode
Report icon label (CSI 20 t)~ partialIcon label report requires a real window system
Report window title (CSI 21 t)~ partialWindow title report requires a real window system
Push title/icon stack (CSI 22 ; 0 t)~ partialTitle stack push not exposed in headless mode
Pop title/icon stack (CSI 23 ; 0 t)~ partialTitle stack pop not exposed in headless mode

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

Erase

FeatureSupportNotes
Erase character (ECH)✓ yes
ED at scroll region boundary✓ yes
EL erases with bg color✗ noEL doesn't preserve SGR background in headless mode
Erase line (EL 2)✓ yes
Erase to BOL (EL 1)✓ yes
Erase to EOL (EL 0)✓ yes
Erase above (ED 1)✓ yes
Erase screen (ED 2)✓ yes
Erase below (ED 0)✓ yes
Erase scrollback (ED 3)✓ yes
Selective Erase (DECSED)✗ noDECSED (selective erase) not supported in wezterm-term

Extensions

FeatureSupportNotes
System clipboard paste? unknown
Font ligatures? unknown
iTerm2 Inline Images (OSC 1337)✗ noiTerm2 inline images not supported by wezterm
Kitty graphics protocol✗ noNot implemented in wezterm-term crate
Kitty graphics: animation✗ noKitty graphics not implemented in wezterm-term crate
Kitty graphics: display✗ noKitty graphics not implemented in wezterm-term crate
Kitty graphics: transmit✗ noKitty graphics not implemented in wezterm-term crate
Kitty graphics: Unicode placeholders✗ noKitty graphics not implemented in wezterm-term crate
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 wezterm-term API
VS Code Shell Integration (OSC 633)✓ yes
Icon and title (OSC 0)✓ yes
Icon name (OSC 1)✓ yes
Foreground color query (OSC 10)~ partialOSC 10 color query not exposed in headless mode
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 in headless mode
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
iTerm2 Cell Size Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported
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)✗ noOSC 2 title handled by WezTerm GUI, not headless backend
Kitty color protocol (OSC 21)✗ noKitty color protocol (OSC 21) not implemented by wezterm
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 in headless mode
OSC 52 clipboard read~ partialOSC 52 clipboard read not exposed in headless mode
OSC 52 clipboard write✓ yes
OSC 5522 advanced clipboard✗ noOSC 5522 not implemented in wezterm
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✗ noOSC 66 text sizing not implemented in wezterm
VTE termprop (OSC 666)? unknown
Current directory (OSC 7)~ partialOSC 7 CWD reporting not exposed via wezterm-term API
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)✓ yes
Sixel graphics✓ yes
Sixel support in DA1~ partialSixel DA1 attribute not exposed in headless mode
Sixel geometry report (CSI ? Pi;Pa;Pv S)✗ noSixel geometry report not supported
24-bit truecolor✓ yes

Input Protocols

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

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)✓ yes
Alt screen legacy (?47)✓ yes
App cursor keys (DECCKM)✓ yes
Application keypad (DECKPAM)~ partialNot exposed via wezterm-term API
Auto-wrap (DECAWM)✓ yes
Bracketed paste (DECSET 2004)✓ yes
Mode 2031 color scheme reporting~ partialMode 2031 not exposed in headless mode
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)✓ yes
Left/Right Margins (DECLRMM, Mode 69)~ partialDECLRMM not exposed via wezterm-term API
All motion mouse (DECSET 1003)✓ yes
SGR mouse mode (DECSET 1006)~ partialSGR mouse encoding not exposed via wezterm-term API
Mouse tracking (DECSET 1000)✓ yes
Origin mode (DECOM)✓ yes
Reverse video (DECSCNM)✓ yes
Synchronized output (DECSET 2026)✓ yes
UTF-8 mouse mode (?1005)✓ yes
Pop color palette (CSI # Q)~ partialColor palette stack not exposed in headless mode
XTPOPSGR — pop SGR stack (CSI # })~ partialSGR stack not exposed in headless mode; sequence consumed silently
Push color palette (CSI # P)~ partialColor palette stack not exposed in headless mode
XTPUSHSGR — push SGR stack (CSI # {)~ partialSGR stack not exposed in headless mode; sequence consumed silently
XTRESTORE — restore DEC private modes (CSI ? Pm r)~ partialXTRESTORE private mode restore not exposed in headless mode
XTSAVE — save DEC private modes (CSI ? Pm s)~ partialXTSAVE private mode save not exposed in headless mode

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

SGR (Text Styling)

FeatureSupportNotes
256-color bg (SGR 48;5)~ partialBackend returns palette index instead of resolved RGB
Bright bg colors (SGR 100-107)~ partialBackend returns palette index instead of resolved RGB
Default bg color (SGR 49)✓ yes
Standard bg colors (SGR 40-47)~ partialBackend returns palette index instead of resolved RGB
24-bit bg (SGR 48;2)✓ yes
Blink (SGR 5)~ partialNot exposed via wezterm-term API
Bold (SGR 1)✓ yes
Faint/dim (SGR 2)✓ yes
256-color fg (SGR 38;5)~ partialBackend returns palette index instead of resolved RGB
Bright fg colors (SGR 90-97)~ partialBackend returns palette index instead of resolved RGB
Default fg color (SGR 39)✓ yes
Standard fg colors (SGR 30-37)~ partialBackend returns palette index instead of resolved RGB
24-bit fg (SGR 38;2)✓ yes
Hidden/invisible (SGR 8)~ partialNot exposed via wezterm-term API
Inverse video (SGR 7)✓ yes
Italic (SGR 3)✓ yes
Overline (SGR 53)✓ yes
Reset all (SGR 0)✓ yes
Reset bold/dim (SGR 22)✓ yes
Reset inverse (SGR 27)✓ yes
Reset italic (SGR 23)✓ yes
Reset underline (SGR 24)✓ yes
Strikethrough (SGR 9)✓ yes
Underline color, indexed (SGR 58;5)~ partialHeadless wezterm backend doesn't expose underlineColor on cells
Reset underline color (SGR 59)✓ yes
Underline color, truecolor (SGR 58;2)~ partialHeadless wezterm backend doesn't expose underlineColor on cells
Underline color (SGR 58)~ partialNot exposed via wezterm-term API
Curly underline (SGR 4:3)✓ yes
Dashed underline (SGR 4:5)✓ yes
Dotted underline (SGR 4:4)✓ yes
Double underline (SGR 21)✓ yes
Underline (SGR 4)✓ yes

Unicode

FeatureSupportNotes
East Asian Ambiguous Width✓ yes
Grapheme Cluster Cursor Movement✓ yes
Tab Stops (HT)✓ yes
Wide Char at Line Wrap✗ noWide char at end of line not handled correctly in headless mode