This skill should be used when the user asks about "tab bar", "tab title", "nerd font icons", "process icons", "tab formatting", "powerline tabs", "retro tab bar", "tab colors", or mentions customizing WezTerm tabs with icons and status indicators.
From wezterm-devnpx claudepluginhub nthplusio/functional-claude --plugin wezterm-devThis skill uses the workspace's default tool permissions.
references/icons.mdDispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
Customize tab bar with Nerd Font icons, process detection, and status indicators.
config.tab_bar_at_bottom = true
config.use_fancy_tab_bar = false -- Retro style for custom formatting
config.tab_max_width = 32
[status_dot] [process_icon] [directory] |
local process_icons = {
-- Shells
['powershell'] = '',
['pwsh'] = '',
['cmd'] = '',
['bash'] = '',
['zsh'] = '',
-- Node.js
['node'] = '',
['npm'] = '',
['bun'] = '',
-- Python
['python'] = '',
['pip'] = '',
-- Editors
['nvim'] = '',
['vim'] = '',
['code'] = '',
-- Git
['git'] = '',
['lazygit'] = '',
-- AI
['claude'] = '',
-- Default
['default'] = '',
}
See references/icons.md for complete icon reference.
wezterm.on('format-tab-title', function(tab, tabs, panes, cfg, hover, max_width)
local pane = tab.active_pane
-- Get process name
local process = pane.foreground_process_name or ''
process = process:gsub('.*[/\\]', ''):gsub('%.exe$', ''):lower()
if process == '' then process = 'shell' end
-- Get icon
local icon = process_icons[process] or process_icons['default']
-- Get directory leaf
local cwd = pane.current_working_dir
local dir_leaf = '~'
if cwd then
local path = cwd.file_path
if path then
path = path:gsub('[/\\]+$', ''):gsub('^/', '')
local leaf = path:match('[^/\\]+$')
if leaf and leaf ~= '' then
dir_leaf = leaf
end
end
end
-- Colors based on active state
local bg = tab.is_active and '#313244' or '#1e1e2e'
local fg = tab.is_active and '#cdd6f4' or '#6c7086'
return {
{ Background = { Color = bg } },
{ Foreground = { Color = fg } },
{ Text = ' ' .. icon .. ' ' .. dir_leaf .. ' │' },
}
end)
config.colors = {
tab_bar = {
background = '#1e1e2e',
active_tab = {
bg_color = '#313244',
fg_color = '#cdd6f4',
},
inactive_tab = {
bg_color = '#1e1e2e',
fg_color = '#6c7086',
},
inactive_tab_hover = {
bg_color = '#45475a',
fg_color = '#cdd6f4',
},
new_tab = {
bg_color = '#1e1e2e',
fg_color = '#6c7086',
},
},
}
process_icons tableMaterial Design Icons (U+F0000+) are recommended for consistent styling.
Install a Nerd Font with Material Design Icons:
config.font = wezterm.font('FiraCode Nerd Font')