Skip to main content
Answers to frequently asked questions about WezTerm configuration, troubleshooting, and features.

General Questions

WezTerm is a GPU-accelerated cross-platform terminal emulator and multiplexer written in Rust. It runs on Linux, macOS, Windows, and FreeBSD. WezTerm includes features like:
  • GPU-accelerated rendering
  • Built-in multiplexer (similar to tmux)
  • Rich configuration via Lua
  • Over 700 built-in color schemes
  • Ligature and emoji support
  • Hyperlink support
  • Split panes and tabs
WezTerm is configured using a Lua file at ~/.wezterm.lua (or ~/.config/wezterm/wezterm.lua).Basic configuration structure:
See the Configuration Examples page for more examples.
WezTerm looks for configuration in these locations (in order):
  1. ~/.wezterm.lua
  2. ~/.config/wezterm/wezterm.lua (Unix/Linux)
  3. $XDG_CONFIG_HOME/wezterm/wezterm.lua (if XDG_CONFIG_HOME is set)
  4. On Windows: C:\Users\YourName\.wezterm.lua
Log files are stored at:
  • Unix: $XDG_RUNTIME_DIR/wezterm
  • macOS/Windows: $HOME/.local/share/wezterm

Unicode and Text Rendering

This is typically a locale issue. tmux will substitute unicode glyphs with underscores if it believes your environment doesn’t support UTF-8.Solution:
  1. Set your locale correctly:
  2. Kill and restart your tmux server:
  3. Check the TMUX FAQ for additional information.
On macOS with WezTerm version 20200620-160318-e00b076c or newer, LANG is set automatically.
There are several possible causes:1. LANG and locale issuesEnsure UTF-8 locale is set:
Check available locales: locale -a2. Font fallback issuesIf your primary font doesn’t contain a glyph, WezTerm tries to find it in fallback fonts. Configure explicit fallback:
3. Multiple garbage charactersIf you see multiple garbage characters instead of one glyph, this is almost always a locale problem. See solution #1 above.
By default, zsh’s line editor doesn’t support combining character sequences.Solution:Add to your ~/.zshrc:
Also ensure LANG is configured correctly:
This can happen when:
  1. Application doesn’t support emoji sequences: Some applications don’t correctly handle multi-codepoint emoji (like skin tone modifiers). The application needs to be updated.
  2. Emoji version incompatibility: Different emoji specifications exist. If pasting emoji into zsh REPL breaks, try emitting the same emoji from a script - WezTerm will likely render it correctly.
  3. Font doesn’t contain the emoji: Ensure Noto Color Emoji or similar is in your font fallback list (WezTerm includes this by default).
WezTerm supports font ligatures by default. Common examples: != becomes , -> becomes .To disable ligatures:
See the advanced font shaping documentation for more control.

Keyboard and Input

Step 1: Enable key event debugging
Step 2: Check what bytes are being sentRun xxd, press the problem key, then Enter, then Ctrl+D:
Step 3: Verify your TERM settingWezTerm sets TERM=xterm-256color by default. Changing this can break key handling.Step 4: Check for conflicts
  • Look for system-level keyboard utilities intercepting keys
  • Check ~/.inputrc for readline settings
  • If using tmux, test without tmux first
Step 5: Review the documentationIf the issue persists, open an issue with the xxd output and your environment details.
The convert-meta readline setting re-encodes latin-1 characters incorrectly in UTF-8 environments.Example: £ becomes #Solution: Disable this setting for UTF-8:
This setting is obsolete in modern UTF-8 terminal environments.
The Option key on macOS can either:
  1. Send Alt/Meta modifier (terminal behavior)
  2. Produce composed characters (macOS default)
WezTerm defaults to terminal behavior. To change:
Many users prefer keeping right Option for composed characters while left Option acts as Alt.

Features and Capabilities

WezTerm supports curly underlines starting in version 20210314-114017-04b7cedd.Escape sequences:
Test in your shell:
For Neovim:Install WezTerm terminfo:
For Vim:Add to .vimrc:
On Windows, ConPTY strips curly underline sequences. Use wezterm ssh or multiplexing to bypass ConPTY.
Add this to your configuration:
This disables:
  • calt - Contextual alternates
  • clig - Contextual ligatures
  • liga - Standard ligatures
Yes! WezTerm has several ways to define color schemes:1. Use a built-in scheme:
WezTerm includes over 700 built-in color schemes.2. Define colors inline:
3. Define multiple schemes:
4. Load from TOML file:Place .toml files in ~/.config/wezterm/colors/ with a [colors] section.

Platform-Specific

When launched from Finder, WezTerm inherits the minimal macOS default PATH, not your shell’s PATH.Solution 1: Spawn via shell (recommended):
zsh users may need to add -l flag to source .zprofile (for Homebrew users) or -i to source .zshrc.
Solution 2: Set PATH in config:
Solution 3: Configure launchd (advanced):
Changing launchd’s user path affects all GUI applications and can cause unexpected behavior.
XCursor theme resolution is complex and involves multiple configuration sources.Quick fix:
Or via environment:
Debug cursor loading:
WezTerm tries to find cursors by:
  1. Checking xcursor_theme config
  2. Reading X11 RESOURCE_MANAGER or XCURSOR_THEME env var
  3. Looking in XCURSOR_PATH or default icon directories
  4. Falling back to X11 cursor font
If you see the old-school X11 pointer, WezTerm couldn’t find your XCursor theme files.
This is a known PowerShell issue. PowerShell enables DECCKM mode and doesn’t restore it when launching external programs.Result: Arrow keys send ESC O A instead of ESC [ A, which breaks some applications.This is not a WezTerm issue - it affects all terminal emulators running PowerShell. The PowerShell team needs to fix this.Workaround: Use a different shell, or restart the affected program in a new terminal session.

Fonts

Use WezTerm’s built-in font debugging:
The output shows:
  • Which font file is used for each character
  • Font weight and style
  • Where the font was found (system, config, bundled)
You don’t need patched fonts! WezTerm includes Nerd Font Symbols in the default fallback.Just configure your preferred font:
Powerline and icon glyphs will work automatically.If you want to use a patched Nerd Font anyway, that works too:
WezTerm includes:
  • JetBrains Mono - Main default font
  • Nerd Font Symbols - Icons and powerline glyphs
  • Noto Color Emoji - Emoji support
These are used automatically unless you configure different fonts.

Configuration

WezTerm automatically reloads when you save your config file. You can also:
  1. Press Ctrl+Shift+R (or Cmd+Shift+R on macOS)
  2. Use the command: wezterm cli load-config
If automatic reload isn’t working, check for syntax errors in your config with:
Yes! Use Lua’s require to split configuration:~/.wezterm.lua:
~/.config/wezterm/keybindings.lua:
This shows all effective bindings including defaults and your custom ones.

Troubleshooting

For targeted debugging:
Save logs to file:
Common causes and solutions:
  1. Transparency/opacity:
  2. Large background image:
    • Resize image to screen resolution
    • Or disable: remove window_background_image
  3. High animation rate:
  4. Runaway process in terminal:
    • Check with top or htop
    • Some programs output huge amounts of data
  1. Search existing issues
  2. Check the documentation
  3. Open a new issue
Include in your report:
  • WezTerm version: wezterm --version
  • Operating system and version
  • Minimal config to reproduce
  • Debug logs if relevant: WEZTERM_LOG=debug