Configuration Overview
Zonvie is configured with a single TOML file. Run zonvie --install to create
a default one.
File location
Section titled “File location”macOS / Linux:
~/.config/zonvie/config.toml- or
$XDG_CONFIG_HOME/zonvie/config.toml
Windows:
%APPDATA%\zonvie\config.toml- or
%USERPROFILE%\.config\zonvie\config.toml
For a description of every key, see the per-section pages in the sidebar
(starting with [neovim]).
Example configuration
Section titled “Example configuration”[neovim]path = "nvim"wsl = falsewsl_distro = "Ubuntu"ssh = falsessh_port = 22ssh_identity = "~/.ssh/id_rsa"
[font]family = "JetBrains Mono"size = 14linespace = 2
[window]blur = trueopacity = 0.85blur_radius = 20
[scrollbar]enabled = trueshow_mode = "scroll" # "always", "hover", "scroll", or combinations like "hover,scroll"opacity = 0.7delay = 1.0
[cmdline]external = true
[popup]external = true
[messages]external = truemsg_pos = { ext-float = "window", mini = "grid" } # display, window, or grid
# Where each class of message goes. These retarget the built-in routes, so# most setups need nothing else.view = "ext-float" # ordinary messagesview_error = "ext-float" # emsg, echoerr, lua_error, rpc_errorview_warn = "ext-float" # wmsgview_history = "split" # :messages / :historyview_search = "mini" # search_count
# Optional rules for anything the settings above cannot express. They are# prepended to the built-in routes, never a replacement: events you do not# mention keep their defaults.[[messages.routes]]event = "msg_show"min_height = 20 # long output is easier to read in a splitview = "split"
[[messages.routes]]event = "msg_ruler"skip = true # hide it outright
[tabline]external = truestyle = "titlebar" # "titlebar", "menu", or "sidebar"sidebar_position = "left" # "left" or "right" (for sidebar style)sidebar_width = 200 # 100-500 (for sidebar style)agent_indicator = true # show AI-agent status icon on terminal tabsagent_notification = true # OS notification when an AI agent finishes
[windows]external = false # Each Neovim window as a separate OS window
[log]enabled = falsepath = "/tmp/zonvie.log"
[performance]glyph_cache_ascii_size = 512glyph_cache_non_ascii_size = 256hl_cache_size = 2048shape_cache_size = 4096atlas_size = 2048
[input]swap_colon_semicolon = false # swap the `:` and `;` keys (single keypresses only)option_as_meta = "both" # "both", "none", "only_left", "only_right"ime_disable_on_activate = falseime_disable_on_modechange = falseime_preedit_mode = "overlay" # "overlay" (floating overlay) or "inline" (inline virt_text)
[server]single_instance = false # route `zonvie <file>` to a running instance (Windows only)open_mode = "tab" # "tab" (new tab) or "current" (replace current window)close_to_tray = false # close button hides to the notification area instead of quitting (Windows only)
[shaders]enabled = falsepost_process = "after_bloom" # only "after_bloom" is implemented todaypreserve_alpha = false # true = keep window transparency/blur showing through the shader# Drop-in compatible with Shadertoy / Ghostty GLSL shaders. Multiple# entries form a chain: each shader's output feeds the next; the# final pass writes to the swapchain. Paths MUST be absolute — they# are opened verbatim, so launches from Finder / Explorer (whose# CWD is set to the system root) won't find relative entries.paths = [ # "/absolute/path/to/your/ghostty-shaders/starfield.glsl", # "/absolute/path/to/your/ghostty-shaders/cursor_blaze.glsl",]