Configuration
Full reference for zurm's TOML configuration file.
Last updated: March 11, 2026
Configuration
Config file: ~/.config/zurm/config.toml — created automatically on first launch with all defaults.
Hot-reload with Cmd+, — no restart needed.
Full Reference
[font]
family = "JetBrains Mono" # font family name (informational)
size = 15 # font size in points
# file = "/path/to/Font.ttf" # custom TTF/OTF; overrides embedded JetBrains Mono
# fallbacks = [...] # see Optional Fonts page
[window]
columns = 120 # initial terminal width in character columns
rows = 35 # initial terminal height in character rows
padding = 4 # pixels inside each pane edge
[shell]
program = "" # shell binary; empty = read from $SHELL, fallback /bin/zsh
args = ["-l"] # arguments passed to the shell
[scrollback]
lines = 10000 # scrollback buffer size per pane
[scroll]
wheel_lines_per_tick = 3 # lines scrolled per mouse wheel tick
[performance]
tps = 30 # Ebitengine tick rate (Update calls/sec); lower = less idle CPU
[input]
double_click_ms = 300 # max ms between clicks to register as double-click
cursor_blink = false # true = blinking cursor at 530 ms; false = steady
[tabs]
max_width_chars = 24 # maximum tab label width in character cells
new_tab_dir = "cwd" # "cwd" = inherit active tab's directory; "home" = $HOME
[tabs.hover]
enabled = true # show minimap popover when hovering a background tab
delay_ms = 300 # ms before popover appears
width = 320 # popover width in logical pixels
height = 200 # popover height in logical pixels
[panes]
divider_width_pixels = 1 # pixel width of the border between panes
[keyboard]
left_option_as_meta = true # left Option sends ESC-prefix (word delete, etc.)
# right Option still composes macOS characters
repeat_delay_ms = 500 # ms before key repeat starts
repeat_interval_ms = 50 # ms between repeated key events (~20/sec)
[status_bar]
enabled = true
show_cwd = true # current working directory
show_git = true # git branch name
show_clock = false # forces a redraw every second
show_process = true # foreground process name (polls every 1s)
show_commit = true # short commit hash next to branch name
show_dirty = true # modified (~N) and staged (+N) file counts
show_ahead_behind = true # commits ahead/behind upstream (N^ Nv)
branch_prefix = "" # set to " " with a Nerd Font
segment_separator = " · " # separator between status bar segments
separator_height_px = 1 # height of top border line (0 = hidden)
padding_px = 4 # top padding above text
[help]
enabled = true # all in-app help surfaces
context_menu = true # right-click opens context menu (set false for PTY apps that use right-click)
close_confirm = true # ask before closing a tab or pane
[session]
enabled = true # save/restore session on quit/launch
restore_on_launch = true # reopen tabs with last CWDs and titles
auto_save = false # automatically save session on quit
[file_explorer]
enabled = true # file explorer sidebar
side = "left" # "left" or "right"
width_pct = 35 # panel width as percent of screen width
[blocks]
enabled = false # OSC 133 command blocks; toggle at runtime with Cmd+B (requires shell hooks)
show_duration = true # show elapsed execution time
border_width = 3 # width in pixels of the left accent stripe
border_color = "#1C1C2E" # border color when exit status is unknown
success_color = "#34D399" # border color for exit code 0
fail_color = "#F87171" # border color for non-zero exit codes
bg_color = "" # optional hex background tint (empty = none)
bg_alpha = 0.0 # opacity of background tint (0.0-1.0)
max_history = 0 # max command blocks per pane (0 = unlimited)
[bell]
style = "visual" # "visual" = screen flash; "none" = disabled
sound = false # play system beep sound
duration_ms = 100 # flash duration in ms
color = "#F59E0B" # hex color for the visual flash
[voice]
enabled = false # enable TTS commands
voice_id = "" # AVSpeechSynthesisVoice identifier; empty = system default
rate = 0.5 # speech rate (0.0-1.0; 0.5 = normal)
pitch = 1.0 # pitch multiplier (0.5-2.0; 1.0 = normal)
volume = 1.0 # volume (0.0-1.0; 1.0 = full)
locale = "en-US" # speech recognition language
read_lines = 10 # lines to read on Cmd+Shift+U
[theme]
name = "" # theme filename without .toml (e.g. "dark"); empty = no theme
# themes live in ~/.config/zurm/themes/
[colors]
background = "#0F0F18"
foreground = "#E8E8F0"
cursor = "#A855F7"
border = "#1C1C2E"
separator = "#555570" # shared separator line color for tab bar and status bar
# 16-color ANSI palette
black = "#555570"
red = "#F87171"
green = "#34D399"
yellow = "#F59E0B"
blue = "#7C3AED"
magenta = "#C084FC"
cyan = "#67E8F9"
white = "#8888A8"
bright_black = "#555570"
bright_red = "#F87171"
bright_green = "#34D399"
bright_yellow = "#F59E0B"
bright_blue = "#A855F7"
bright_magenta = "#C084FC"
bright_cyan = "#67E8F9"
bright_white = "#E8E8F0"
Shell Hooks
Command blocks (OSC 133) require shell hooks. Install via the command palette: Cmd+P then search “Install shell hooks”.
Themes
External TOML theme files live in ~/.config/zurm/themes/. Set [theme] name to the filename without .toml. A theme overrides any [colors] values it defines.
Keybindings
All keybindings are discoverable in-app via Cmd+/ (help overlay) or Cmd+P (command palette).