Skip to content

WezTerm

WezTerm is a cross-platform terminal emulator and multiplexer. It supports tabs, panes, GPU-accelerated rendering, rich font features, Lua configuration, and searchable documentation. In this setup it is the main terminal UI around tools like Neovim, Git, and shell sessions.

Why it matters

WezTerm is the visual shell for the workflow. It gives a consistent terminal experience with readable font settings, tabs, custom colors, and fast keyboard navigation.

WezTerm logo

Configuration file:

text
wezterm/.config/wezterm/wezterm.lua

Official Resources

ResourceURL
Websitewezterm.org
Configuration docswezterm.org/config
GitHubgithub.com/wez/wezterm

What It Is Used For Here

UseNotes
Terminal sessionsMain shell and command-line workspace.
Tabs and panesQuickly switch between multiple terminal contexts.
Neovim hostRuns Neovim with custom colors, tabs, and font settings.
Lua configurationAppearance and shortcuts live in wezterm.lua.

Problems It Solves

ProblemSolution in this setup
Terminal UI changes between machines.The theme, font, padding, opacity, and tab bar are versioned.
Switching tabs is slow.Cmd Option Left/Right moves between tabs.
Terminal config is hard to audit.The setup is a single Lua file in the repo.
macOS window controls can feel inconsistent.Integrated native buttons are configured.

First Steps

Open WezTerm from macOS:

sh
open -a WezTerm

Open WezTerm in the Desktop folder:

sh
open -a WezTerm ~/Desktop

Reload config after editing:

text
Cmd R

Custom Shortcuts

ShortcutAction
Cmd Option LeftMove to previous tab
Cmd Option RightMove to next tab

These are the only shortcuts overridden by wezterm.lua. The commands below are WezTerm defaults that remain available. You can inspect the effective key table for your installed version with:

sh
wezterm --config-file ~/.config/wezterm/wezterm.lua show-keys

Common Shortcuts

Tabs and Windows

ShortcutAction
Cmd TOpen new tab
Cmd WClose current tab, with confirmation
Cmd NOpen new window
Cmd QQuit WezTerm
Cmd 1 ... Cmd 8Go to tab 1 ... 8
Cmd 9Go to last tab
Cmd Shift [Move to previous tab
Cmd Shift ]Move to next tab
Cmd Option LeftMove to previous tab, custom shortcut
Cmd Option RightMove to next tab, custom shortcut

Panes

ShortcutAction
Ctrl Alt "Split pane vertically
Ctrl Alt %Split pane horizontally
Ctrl Shift LeftFocus pane on the left
Ctrl Shift RightFocus pane on the right
Ctrl Shift UpFocus pane above
Ctrl Shift DownFocus pane below
Ctrl Shift ZToggle pane zoom
ShortcutAction
Cmd CCopy to clipboard
Cmd VPaste from clipboard
Cmd FSearch
Ctrl Shift XEnter copy mode
Ctrl Shift SpaceQuick select

Display

ShortcutAction
Cmd =Increase font size
Cmd -Decrease font size
Cmd 0Reset font size
Alt EnterToggle fullscreen
Cmd RReload configuration

UI

AreaConfiguration
FontJetBrainsMono Nerd Font, with JetBrains Mono fallback
Font size14
ThemeCatppuccin Mocha
Window opacity84%
macOS blur35 on macOS only
Line height1.05
Window decorationsIntegrated macOS buttons with resize
Tab barAlways visible, custom formatted
New tab buttonHidden

Complete Appearance Configuration

SettingValuePurpose
Font fallbackNerd Font, then JetBrains MonoPreserve icons while retaining readable text if the patched font is unavailable.
Font size14Comfortable code and terminal text size.
Line height1.05Adds a small amount of vertical breathing room.
Color schemeCatppuccin MochaShared dark palette with Neovim.
Background opacity0.84Keeps the terminal slightly transparent.
macOS background blur35Makes content behind the transparent window less distracting.
Left/right padding16Prevents text touching the window edges.
Top padding14Separates terminal content from the title and tab area.
Bottom padding12Separates the final terminal row from the window edge.
Tab maximum width36Prevents one long title consuming the complete bar.

On macOS, the close, hide, and maximize controls are integrated on the left of the terminal title area. Linux receives normal resizable window decorations because native macOS controls and blur do not exist there.

On Linux, the configuration skips native macOS title buttons and blur. The remaining theme, tab bar, font, padding, and navigation behavior is shared.

WezTerm calls the macOS Command key SUPER internally. The custom CMD|OPT bindings therefore appear as SUPER|ALT in wezterm show-keys.

Tab Bar

Tabs show:

ElementBehavior
IndexOne-based tab number
TitleExplicit tab title, or active pane title
Active tabLavender background
Inactive tabDark background
Hovered tabBrighter dark background

Long tab titles are truncated to fit the tab width.

The tab title is selected in this order:

  1. A title explicitly assigned to the tab.
  2. The active pane title, usually supplied by the shell or current program.
  3. Whitespace is trimmed and the result is shortened to fit the configured width.

The rounded edges use Powerline glyphs from JetBrainsMono Nerd Font. The tab bar remains visible with a single tab so its position does not change as tabs are opened and closed. The + button is intentionally hidden; use Cmd T.

Relationship With The Other Tools

text
WezTerm window
  -> WezTerm tabs
     -> Zsh shell
        -> optional tmux session
           -> tmux windows and panes
              -> Neovim or other terminal commands

Closing a WezTerm tab closes the shell process in that tab. A detached tmux session continues running because it is managed by the tmux server rather than the terminal window.

Reload And Diagnose

CommandPurpose
Cmd RReload wezterm.lua in the running application.
wezterm show-keysShow effective default and custom shortcuts.
wezterm ls-fontsList fonts WezTerm can discover.
wezterm ls-fonts | rg 'JetBrainsMono Nerd Font'Verify the configured Nerd Font.

When the Lua file contains an error, WezTerm displays a configuration error instead of applying the broken reload. Run bbldr dotfiles check from the repo to parse the same file before publishing it.

WezTerm vs tmux

WezTerm tabs are terminal-app tabs. tmux windows and panes live inside a shell session and can stay alive even when the terminal window closes.