This project provides a configurable status bar for WezTerm, a GPU-accelerated terminal emulator. It includes various features like battery status, current mode, hostname, current working directory, and date/time, all displayed in a customizable status bar.
- Mode Indicator: Shows the current mode (normal, copy, search) with icons.
- Battery Status: Displays the battery level with appropriate icons.
- Hostname: Displays the hostname of the current machine.
- Current Working Directory: Shows the current working directory.
- Date/Time: Displays the current date and time in a customizable format.
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
wezterm.plugin
.require('https://github.com/yriveiro/wezterm-status')
.apply_to_config(config)
Customize the plugin with the apply_to_config
method's second argument:
wezterm.plugin
.require('https://github.com/yriveiro/wezterm-status')
.apply_to_config(config, {
cells = {
battery = { enabled = false },
date = { format = '%H:%M' }
}
})
Controls visual elements and separators.
ui.separators = {
-- Powerline-style arrows
arrow_solid_left = '\u{e0b0}',
arrow_solid_right = '\u{e0b2}',
arrow_thin_left = '\u{e0b1}',
arrow_thin_right = '\u{e0b3}',
}
cells.mode = {
-- Enable mode display
enabled = true,
-- Map modes to icons
modes = {
normal = ' ' .. wezterm.nerdfonts.cod_home,
copy_mode = ' ' .. wezterm.nerdfonts.cod_copy,
search_mode = ' ' .. wezterm.nerdfonts.cod_search,
}
}
cells.battery = {
-- Enable battery status
enabled = true
}
Shows dynamic icons based on charge level:
- Empty: ≤ 25%
- Quarter: ≤ 50%
- Three Quarters: ≤ 75%
- Full: > 75%
cells.hostname = {
-- Enable hostname
enabled = true
}
cells.cwd = {
-- Enable CWD display
enabled = true,
-- Replace $HOME with ~
tilde_prefix = true,
-- Path aliases for shortening
path_aliases = {
-- Replace long development path with an icon
{ pattern = "/home/user/development", replacement = "🛠️" },
-- Use git icon for repositories
{ pattern = "/home/user/repos", replacement = "" },
-- Docker projects
{ pattern = "/home/user/docker", replacement = "🐳" },
-- Kubernetes configuration
{ pattern = "/home/user/.kube", replacement = "☸️" }
}
}
The status bar supports path aliases to create more compact and readable directory paths. This feature is particularly useful for frequently accessed directories or deep nested paths.
With this configuration path will be aliased to
/home/user/development/project → 🛠️/project
/home/user/repos/my-app → /my-app
/home/user/docker/compose → 🐳/compose
This feature helps maintain a clean status bar while preserving path context through meaningful icons or abbreviations.
cells.workspace = {
-- Enable Wezterm Workspace
enabled = true,
-- Clock icon
icon = wezterm.nerdfonts.md_television_guide,
}
cells.date = {
-- Enable timestamp
enabled = true,
-- Clock icon
icon = wezterm.nerdfonts.md_clock_time_three_outline,
-- Time format (strftime)
format = '%H:%M:%S'
}
The component will try to guess the path but the process is prone to error, if
the current logic doesn't find the binary you can pass it on kubectl_path
cells.k8s_context = {
enabled = true,
-- If the current autodiscovery logic doesn't work add kubectl_path
kubectl_path = '/usr/local/bin/kubectl'
}
Available text attributes:
Bold
: Bold intensityCurly
/Dashed
/Dotted
/Double
/Single
: Underline stylesHalf
: Half intensityItalic
/NoItalic
: Italic controlNoUnderline
: Remove underlineNormal
: Normal intensity
Open issues or submit pull requests with improvements.
MIT License