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
70%
106 passed · 32 partial · 13 failed of 151 features
Tested: March 26, 2026
Analysis2026-03-26

WezTerm scores 91% (138/151) on the terminfo.dev feature matrix, with gaps in the Core TUI, Modern TUI, Rich TUI, Unicode baselines. Ranks #6 of 13 tested terminals. Missing 13 features.

Character Sets

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

Cursor

FeatureSupportNotes
CUD stops at bottom✓ yes
CUP at screen boundaries✗ noCUP boundary behavior differs in wezterm-term headless mode
CUP with DECOM✓ yes
CUU stops at top✓ yes
Hide cursor (DECTCEM)✓ yes
Cursor horizontal absolute (CHA)✓ yes
Cursor position (CUP)✓ yes
Cursor back (CUB)✓ yes
Cursor down (CUD)✓ yes
Cursor forward (CUF)✓ yes
Cursor home✓ yes
Cursor up (CUU)✓ yes
Cursor next line (CNL)✓ yes
Cursor position report (DSR 6)~ partialHeadless mode has no output stream for DSR responses
Reverse Wrap (Mode 45)✓ yes
Save/restore cursor (DECSC)✓ yes
Cursor shape (DECSCUSR)✓ 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
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
Terminal Version (XTVERSION)~ partialHeadless mode has no output stream for XTVERSION responses

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
iTerm2 Inline Images (OSC 1337)✗ noiTerm2 inline images not supported by wezterm
Kitty graphics protocol✗ noNot implemented in wezterm-term crate
Kitty keyboard protocol✓ 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
Foreground color query (OSC 10)~ partialOSC 10 color query not exposed in headless mode
Background color query (OSC 11)~ partialOSC 11 color query not exposed in headless mode
iTerm2 Capability Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported
iTerm2 Cell Size Reporting (OSC 1337)✗ noiTerm2-specific protocol not supported
Window title (OSC 2)✓ yes
Clipboard access (OSC 52)~ partialOSC 52 clipboard not exposed in headless mode
OSC 5522 advanced clipboard✗ noOSC 5522 not implemented in wezterm
OSC 66 text sizing✗ noOSC 66 text sizing not implemented in wezterm
Current directory (OSC 7)~ partialOSC 7 CWD reporting not exposed via wezterm-term API
Hyperlinks (OSC 8)✓ yes
OSC 9;4 progress bar? 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
24-bit truecolor✓ yes

Input Protocols

FeatureSupportNotes
Button-Event Mouse (1002)✓ yes
CSI u Key Encoding✓ yes
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
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
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

Reset

FeatureSupportNotes
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 (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

Powered by Termless
Playwright for Terminals