Skip to content

Configuration

All state lives in ~/.luvus/ (debug builds: ~/.luvus-dev/), created owner-only (0700).

FileContents
config.jsontheme, language, shell, layout, notifications, keybindings, sidebars, and Luvus Bar placement
session.jsonthe auto-saved session snapshot (workspaces → tabs → panes)
orch.jsonthe orchestration task ledger + leases
modules.json + modules/installed extensions and their state
themes/*.tomlinstalled data-only themes, shared by named sessions
themes/*.source.jsonsource URL/path, SHA-256 digest, and install timestamp for managed theme installs
worktrees/worktrees created by luvus, nested per repo
reviews/private local DIFF notes and viewed fingerprints, keyed by hashed repository and worktree identity
luvus.sock / luvus-client.sockthe control + render sockets (owner-only)

Prefer editing config through Settings (it applies live and writes the file for you). Hand-edits are picked up on restart. Old config files load cleanly across versions because unknown fields get defaults.

KeyEffect
themeactive bundled, installed, or virtual theme ID. A missing installed ID falls back visually without erasing the stored value.
layout.scrollback_bytesapproximate memory budget per pane’s retained history; defaults to 10485760 (10 MiB). The legacy layout.scrollback line count is read for compatibility. (See Scrollback.)
layout.show_titlesshow the title on each pane border
layout.resume_in_new_workspaceresume a session into its own workspace instead of a new tab
layout.file_openwhat a click in the FILES dock does: readonly (default) or an editor command such as vim (see Browsing & Opening Files)
layout.diff_layoutdefault native DIFF layout: auto, split, or stack
layout.diff_wrapwrap long diff rows instead of using horizontal navigation
layout.diff_context_linesunchanged Git context lines per hunk, from 0 to 20
layout.diff_show_line_numbersshow old and new source line gutters
layout.diff_marker_stylechanged-line indicator: symbols (default), bars, or both
layout.diff_color_modechanged-line palette: theme (default) follows the active theme, while standard uses fixed red and green review colors
layout.diff_live_refreshrefresh visible diff views when the shared FILES status scan changes
prefixthe command-mode prefix chord (default ctrl+space; e.g. ctrl+b). Must include Ctrl (see Keybindings)
keybindingscommand id → key, overriding the defaults
bars.top_right / bars.bottom_right / bars.offcanonical widget ids (module:id) in each Luvus Bar placement. core:runtime-status defaults to Bottom. Live content and notifications are never persisted.
VariableEffect
LUVUS_HOMErelocate the state directory
LUVUS_SHELLshell for new panes (overrides config.shell)
EDITORoffered as an “open with” choice for files, alongside the editors found on PATH
LUVUS_PANE_IDinjected into every pane, the pane’s own id
LUVUS_SOCKET_PATHinjected into every pane, the control socket

Luvus 0.11.x accepts BOHAY_HOME, BOHAY_SHELL, BOHAY_SESSION, BOHAY_SOCKET_PATH, and the old update/integration override variables as fallbacks when their LUVUS_* equivalents are absent. Every pane and module is given both LUVUS_* and BOHAY_* identity variables during the transition. New configuration and documentation should use only LUVUS_*.

On a default-home first launch, durable data is copied from ~/.bohay/ to ~/.luvus/. The source remains untouched for rollback. Explicit custom homes are never copied automatically.