Appearance
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
| Feature | Support | Notes |
|---|---|---|
| DEC line drawing character set | ✓ yes | |
| DEC Special Graphics | ✓ yes | |
| G0/G1 character set switching | ✓ yes | |
| UTF-8 mode | ✓ yes |
Cursor
| Feature | Support | Notes |
|---|---|---|
| ANSI restore cursor (CSI u) | ✓ yes | |
| ANSI save cursor (CSI s) | ✓ yes | |
| CPL cursor preceding line (CSI F) | ✓ yes | |
| CUD stops at bottom | ✓ yes | |
| CUP at screen boundaries | ✗ no | CUP 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 | |
| HPA horizontal position absolute (CSI `) | ✓ 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) | ~ partial | Headless mode has no output stream for DSR responses |
| Reverse Wrap (Mode 45) | ✓ yes | |
| Save/restore cursor (DECSC) | ✓ yes | |
| Cursor shape (DECSCUSR) | ✓ yes | |
| VPA vertical position absolute (CSI d) | ✓ yes |
Device Status
| Feature | Support | Notes |
|---|---|---|
| Mode Report (DECRPM) | ~ partial | Headless mode has no output stream for DECRPM responses |
| Request Setting (DECRQSS) | ~ partial | Headless 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) | ~ partial | Headless mode has no output stream for DA1 responses |
| Secondary Device Attributes (DA2) | ~ partial | Headless mode has no output stream for DA2 responses |
| Device status report (DSR 5) | ~ partial | Headless mode has no output stream for DSR responses |
| Feature Reporting (TERM_FEATURES) | ? unknown | |
| Tertiary Device Attributes (DA3) | ~ partial | Headless mode has no output stream for DA3 responses |
| Query Terminfo (XTGETTCAP) | ~ partial | Headless mode has no output stream for XTGETTCAP responses |
| XTGETXRES — query resource value (DCS + Q) | ✗ no | XTGETXRES resource query — xterm-specific |
| XTREPORTCOLORS — report color capabilities (CSI # R) | ✗ no | XTREPORTCOLORS (xterm patch 401+) not yet adopted outside xterm |
| Terminal Version (XTVERSION) | ~ partial | Headless mode has no output stream for XTVERSION responses |
| Report window size in pixels (CSI 14 t) | ~ partial | Window pixel-size report requires a real window system |
| Report cell size in pixels (CSI 16 t) | ~ partial | Cell pixel-size report requires a real window system |
| Report text area size in chars (CSI 18 t) | ~ partial | Text area size report not exposed in headless mode |
| Report icon label (CSI 20 t) | ~ partial | Icon label report requires a real window system |
| Report window title (CSI 21 t) | ~ partial | Window title report requires a real window system |
| Push title/icon stack (CSI 22 ; 0 t) | ~ partial | Title stack push not exposed in headless mode |
| Pop title/icon stack (CSI 23 ; 0 t) | ~ partial | Title stack pop not exposed in headless mode |
Editing
| Feature | Support | Notes |
|---|---|---|
| DECCARA — change attrs in rectangle | ✗ no | VT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals |
| DECCRA — copy rectangular area | ✗ no | VT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals |
| DECDC — delete columns (CSI Ps ' ~) | ✗ no | Column editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps |
| DECERA — erase rectangular area | ✗ no | VT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals |
| DECFRA — fill rectangular area | ✗ no | VT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals |
| DECIC — insert columns (CSI Ps ' }) | ✗ no | Column editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps |
| DECRARA — reverse attrs in rectangle | ✗ no | VT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals |
| DECRQCRA — checksum rectangular area | ✗ no | VT420 rectangular area operations not implemented — legacy DEC features omitted by most modern terminals |
| DECSACE — select attribute-change extent | ✓ yes | |
| DECSERA — selective erase rectangular area | ✗ no | VT420 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 @) | ✗ no | Column editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps |
| SR — shift right (CSI Ps SP A) | ✗ no | Column editing (SL/SR/DECIC/DECDC) not implemented — rarely needed by modern TUI apps |
Erase
| Feature | Support | Notes |
|---|---|---|
| Erase character (ECH) | ✓ yes | |
| ED at scroll region boundary | ✓ yes | |
| EL erases with bg color | ✗ no | EL 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) | ✗ no | DECSED (selective erase) not supported in wezterm-term |
Extensions
| Feature | Support | Notes |
|---|---|---|
| System clipboard paste | ? unknown | |
| Font ligatures | ? unknown | |
| iTerm2 Inline Images (OSC 1337) | ✗ no | iTerm2 inline images not supported by wezterm |
| Kitty graphics protocol | ✗ no | Not implemented in wezterm-term crate |
| Kitty graphics: animation | ✗ no | Kitty graphics not implemented in wezterm-term crate |
| Kitty graphics: display | ✗ no | Kitty graphics not implemented in wezterm-term crate |
| Kitty graphics: transmit | ✗ no | Kitty graphics not implemented in wezterm-term crate |
| Kitty graphics: Unicode placeholders | ✗ no | Kitty 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) | ~ partial | OSC 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) | ~ partial | OSC 10 color query not exposed in headless mode |
| Reset color palette (OSC 104) | ✗ no | OSC 104 color reset requires a real display — headless backends have no color palette to reset |
| Background color query (OSC 11) | ~ partial | OSC 11 color query not exposed in headless mode |
| Reset foreground color (OSC 110) | ✗ no | OSC 110 foreground reset requires a real display — headless backends have no color palette to reset |
| Reset background color (OSC 111) | ✗ no | OSC 111 background reset requires a real display — headless backends have no color palette to reset |
| Reset cursor color (OSC 112) | ✗ no | OSC 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) | ✗ no | OSC 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) | ✗ no | iTerm2-specific protocol not supported |
| iTerm2 Cell Size Reporting (OSC 1337) | ✗ no | iTerm2-specific protocol not supported |
| Highlight background (OSC 17) | ✗ no | OSC 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) | ✗ no | OSC 19 highlight foreground query requires a real display — headless backends have no color palette to query |
| Window title (OSC 2) | ✗ no | OSC 2 title handled by WezTerm GUI, not headless backend |
| Kitty color protocol (OSC 21) | ✗ no | Kitty 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) | ✗ no | OSC 4 color query requires a real display — headless backends have no color palette to query |
| Audio sound (OSC 440) | ? unknown | |
| Special color (OSC 5) | ✗ no | OSC 5 special color query requires a real display — headless backends have no color palette to query |
| Clipboard access (OSC 52) | ~ partial | OSC 52 clipboard not exposed in headless mode |
| OSC 52 clipboard read | ~ partial | OSC 52 clipboard read not exposed in headless mode |
| OSC 52 clipboard write | ✓ yes | |
| OSC 5522 advanced clipboard | ✗ no | OSC 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 | ✗ no | OSC 66 text sizing not implemented in wezterm |
| VTE termprop (OSC 666) | ? unknown | |
| Current directory (OSC 7) | ~ partial | OSC 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 | ~ partial | Sixel DA1 attribute not exposed in headless mode |
| Sixel geometry report (CSI ? Pi;Pa;Pv S) | ✗ no | Sixel geometry report not supported |
| 24-bit truecolor | ✓ yes |
Input Protocols
| Feature | Support | Notes |
|---|---|---|
| Button-Event Mouse (1002) | ✓ yes | |
| CSI u Key Encoding | ✓ yes | |
| Kitty click events | ? unknown | |
| modifyOtherKeys | ~ partial | modifyOtherKeys not exposed via wezterm-term API |
| modifyOtherKeys mode 3 | ~ partial | modifyOtherKeys mode 3 not exposed in headless mode |
| Pixel Mouse Reporting (1016) | ~ partial | SGR pixel mouse mode not exposed via wezterm-term API |
| urxvt Mouse Reporting (1015) | ✗ no | urxvt mouse mode (?1015) not implemented |
| X10 Mouse Tracking (9) | ✗ no | X10 mouse mode (?9) not implemented |
Modes
Reset
| Feature | Support | Notes |
|---|---|---|
| DECALN screen alignment (ESC # 8) | ✓ yes | |
| Backend reset() method | ✓ yes | |
| Full reset (RIS) | ✓ yes | |
| SGR reset clears attributes | ✓ yes | |
| Soft reset (DECSTR) | ~ partial | DECSTR resets modes but headless probe reads stale state |
Scrollback
| Feature | Support | Notes |
|---|---|---|
| Scrollback accumulates | ✓ yes | |
| Alt screen separate scrollback | ✓ yes | |
| DECSTBM constrains scrolling | ✓ yes | |
| DECSTBM reset to full screen | ✓ yes | |
| Reverse index (RI) | ✓ yes | |
| Scroll down (SD) | ✓ yes | |
| Scroll up (SU) | ✓ yes | |
| Scroll region (DECSTBM) | ✓ yes | |
| Total line count | ✓ yes |
SGR (Text Styling)
| Feature | Support | Notes |
|---|---|---|
| 256-color bg (SGR 48;5) | ~ partial | Backend returns palette index instead of resolved RGB |
| Bright bg colors (SGR 100-107) | ~ partial | Backend returns palette index instead of resolved RGB |
| Default bg color (SGR 49) | ✓ yes | |
| Standard bg colors (SGR 40-47) | ~ partial | Backend returns palette index instead of resolved RGB |
| 24-bit bg (SGR 48;2) | ✓ yes | |
| Blink (SGR 5) | ~ partial | Not exposed via wezterm-term API |
| Bold (SGR 1) | ✓ yes | |
| Faint/dim (SGR 2) | ✓ yes | |
| 256-color fg (SGR 38;5) | ~ partial | Backend returns palette index instead of resolved RGB |
| Bright fg colors (SGR 90-97) | ~ partial | Backend returns palette index instead of resolved RGB |
| Default fg color (SGR 39) | ✓ yes | |
| Standard fg colors (SGR 30-37) | ~ partial | Backend returns palette index instead of resolved RGB |
| 24-bit fg (SGR 38;2) | ✓ yes | |
| Hidden/invisible (SGR 8) | ~ partial | Not 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) | ~ partial | Headless wezterm backend doesn't expose underlineColor on cells |
| Reset underline color (SGR 59) | ✓ yes | |
| Underline color, truecolor (SGR 58;2) | ~ partial | Headless wezterm backend doesn't expose underlineColor on cells |
| Underline color (SGR 58) | ~ partial | Not 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 |
Text
| Feature | Support | Notes |
|---|---|---|
| Backspace (BS) | ✓ yes | |
| Basic text rendering | ✓ yes | |
| CBT backward tab (CSI Z) | ✓ yes | |
| CHT forward tab (CSI I) | ✓ yes | |
| Combining characters (0 cols) | ✓ yes | |
| Carriage return | ✓ yes | |
| HTS set tab stop (ESC H) | ✓ yes | |
| Index (IND) | ✓ yes | |
| Line feed | ✓ yes | |
| Next line (NEL) | ✓ yes | |
| Overwrite at cursor | ✓ yes | |
| Reverse Index at Scroll Top | ✓ yes | |
| Tab stops | ✓ yes | |
| TBC clear tab stop (CSI g) | ✗ no | Tab stop clear (TBC) not exposed via wezterm-term API |
| CJK wide chars (2 cols) | ✓ yes | |
| Emoji wide chars (2 cols) | ✓ yes | |
| Regional indicator flags (2 cols) | ✓ yes | |
| Variation selector 16 (emoji presentation) | ✗ no | VS16 emoji variation selectors not handled |
| Emoji ZWJ sequences (2 cols) | ✓ yes | |
| Text wraps at width | ✓ yes |
Unicode
| Feature | Support | Notes |
|---|---|---|
| East Asian Ambiguous Width | ✓ yes | |
| Grapheme Cluster Cursor Movement | ✓ yes | |
| Tab Stops (HT) | ✓ yes | |
| Wide Char at Line Wrap | ✗ no | Wide char at end of line not handled correctly in headless mode |