
wezterm
Configure and customize WezTerm terminal emulator. Use for setting up WezTerm config, themes, keybindings, and advanced features.
- Installs
- 57
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/johnlindquist/claude --skill wezterm- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads wezterm automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
WezTerm Configuration
Configure the WezTerm terminal emulator.
Prerequisites
# Install WezTerm
brew install --cask wezterm
Config location: ~/.wezterm.lua or ~/.config/wezterm/wezterm.lua
Basic Configuration
Minimal Config
-- ~/.wezterm.lua
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
-- Font
config.font = wezterm.font('JetBrains Mono')
config.font_size = 14.0
-- Colors
config.color_scheme = 'Catppuccin Mocha'
-- Window
config.window_padding = {
left = 10,
right = 10,
top = 10,
bottom = 10,
}
return config
Font Configuration
-- Single font
config.font = wezterm.font('JetBrains Mono')
-- Font with fallbacks
config.font = wezterm.font_with_fallback({
'JetBrains Mono',
'Fira Code',
'Nerd Font Symbols',
})
-- Font with weight
config.font = wezterm.font('JetBrains Mono', { weight = 'Medium' })
-- Different font for bold
config.font_rules = {
{
intensity = 'Bold',
font = wezterm.font('JetBrains Mono', { weight = 'Bold' }),
},
}
Color Schemes
-- Use built-in scheme
config.color_scheme = 'Catppuccin Mocha'
-- List available schemes
-- wezterm show-keys --lua
-- Custom colors
config.colors = {
foreground = '#c0caf5',
background = '#1a1b26',
cursor_bg = '#c0caf5',
selection_bg = '#33467c',
ansi = {'#15161e', '#f7768e', '#9ece6a', '#e0af68', '#7aa2f7', '#bb9af7', '#7dcfff', '#a9b1d6'},
brights = {'#414868', '#f7768e', '#9ece6a', '#e0af68', '#7aa2f7', '#bb9af7', '#7dcfff', '#c0caf5'},
}
Key Bindings
Custom Keybindings
config.keys = {
-- Split panes
{ key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = 'd', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
-- Navigate panes
{ key = 'LeftArrow', mods = 'CMD', action = wezterm.action.ActivatePaneDirection 'Left' },
{ key = 'RightArrow', mods = 'CMD', action = wezterm.action.ActivatePaneDirection 'Right' },
{ key = 'UpArrow', mods = 'CMD', action = wezterm.action.ActivatePaneDirection 'Up' },
{ key = 'DownArrow', mods = 'CMD', action = wezterm.action.ActivatePaneDirection 'Down' },
-- Tabs
{ key = 't', mods = 'CMD', action = wezterm.action.SpawnTab 'CurrentPaneDomain' },
{ key = 'w', mods = 'CMD', action = wezterm.action.CloseCurrentPane { confirm = true } },
-- Font size
{ key = '=', mods = 'CMD', action = wezterm.action.IncreaseFontSize },
{ key = '-', mods = 'CMD', action = wezterm.action.DecreaseFontSize },
{ key = '0', mods = 'CMD', action = wezterm.action.ResetFontSize },
}
Leader Key
-- Define leader key (like tmux prefix)
config.leader = { key = 'a', mods = 'CMD', timeout_milliseconds = 1000 }
config.keys = {
-- Leader + c = new tab
{ key = 'c', mods = 'LEADER', action = wezterm.action.SpawnTab 'CurrentPaneDomain' },
-- Leader + | = vertical split
{ key = '|', mods = 'LEADER', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
-- Leader + - = horizontal split
{ key = '-', mods = 'LEADER', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
}
Advanced Features
Tab Bar Customization
config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = true
config.hide_tab_bar_if_only_one_tab = true
-- Custom tab title
wezterm.on('format-tab-title', function(tab)
local title = tab.tab_title
if title and #title > 0 then
return title
end
return tab.active_pane.title
end)
Startup Actions
-- Start with specific layout
wezterm.on('gui-startup', function(cmd)
local tab, pane, window = mux.spawn_window(cmd or {})
-- Split right
pane:split { direction = 'Right' }
end)
SSH Domains
config.ssh_domains = {
{
name = 'my-server',
remote_address = 'server.example.com',
username = 'user',
},
}
-- Connect with: wezterm connect my-server
Multiplexer
-- Unix domain for persistent sessions
config.unix_domains = {
{ name = 'unix' },
}
-- Default to multiplexer
config.default_gui_startup_args = { 'connect', 'unix' }
Useful Snippets
Quick Theme Toggle
local function toggle_theme()
local overrides = window:get_config_overrides() or {}
if overrides.color_scheme == 'Catppuccin Latte' then
overrides.color_scheme = 'Catppuccin Mocha'
else
overrides.color_scheme = 'Catppuccin Latte'
end
window:set_config_overrides(overrides)
end
config.keys = {
{ key = 't', mods = 'CMD|SHIFT', action = wezterm.action_callback(toggle_theme) },
}
Background Image
config.window_background_image = '/path/to/image.png'
config.window_background_image_hsb = {
brightness = 0.02,
saturation = 0.5,
}
Status Bar
wezterm.on('update-right-status', function(window, pane)
window:set_right_status(wezterm.format({
{ Text = wezterm.strftime('%H:%M') },
}))
end)
Command Line
# Open with specific config
wezterm --config-file path/to/config.lua
# Connect to multiplexer
wezterm connect unix
# List color schemes
wezterm ls-colors
# Show key bindings
wezterm show-keys
wezterm show-keys --lua
# CLI utilities
wezterm cli list # List panes
wezterm cli spawn # Spawn new pane
wezterm cli split-pane # Split current pane
Best Practices
- Start simple - Add features as needed
- Use config_builder - Better error messages
- Test incrementally - WezTerm reloads on save
- Backup your config - Keep in dotfiles repo
- Use leader keys - Avoid conflicts with apps
- Check logs -
wezterm --config-file ~/.wezterm.luashows errors
FAQ
What does the wezterm skill do?
Configure and customize WezTerm terminal emulator. Use for setting up WezTerm config, themes, keybindings, and advanced features.
How do I install wezterm?
Run npx skills add https://github.com/johnlindquist/claude --skill wezterm in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/wezterm/ (personal) or .claude/skills/wezterm/ (project).
Which AI agents can use wezterm?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is wezterm safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains wezterm?
It is published by johnlindquist in johnlindquist/claude. It has 57 recorded installs.
More from johnlindquist/claude
gemini-image
johnlindquist/claude
Analyze images using Gemini's vision capabilities. Use for image analysis, text extraction from screenshots, and visual content understanding.
memory
johnlindquist/claude
Persistent knowledge storage using basic-memory CLI. Use to save notes, search memories semantically, and build context for topics across sessions.
brainstorm
johnlindquist/claude
Generate ideas and explore possibilities with AI. Use for creative problem solving, generating alternatives, and expanding on concepts.
deepwiki
johnlindquist/claude
Query DeepWiki for repository documentation and structure. Use to understand open source projects, find API docs, and explore codebases.
Popular other skills
hyperframes-cli
heygen-com/hyperframes
The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.
triage
mattpocock/skills
Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.
ask-matt
mattpocock/skills
Ask which skill or flow fits your situation. A router over the skills in this repo.
to-questionnaire
mattpocock/skills
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
loop-me
mattpocock/skills
Grill me about specs for the workflows I want to build, within this workspace.