Configuration
kanri works with zero config — every field below has a sensible
compiled-in default. Config lives at ~/.config/kanri/config.toml
(respects $XDG_CONFIG_HOME), or pass --config <path> to use a
different file. A missing config file is not an error.
Full example
# Show a Japanese companion label under every tab/section label.
# Off by default — a terminal powertool needs every column of width.
jp_labels = false
# How often live-ticking views (Overview, Process, Memory, Disk,
# Hardware) refresh, in milliseconds.
refresh_interval_ms = 1000
[theme]
# Overrides the default theme source (~/.config/quickshell/theme.json).
# Point this at any JSON file with the same shape to use kanri outside
# that theming pipeline. Every field in that file is optional — kanri
# falls back to a compiled-in dark palette for anything missing.
override_path = "/path/to/theme.json"
[thresholds]
# Color-coding cutoffs (0-100) shared by every gauge/table that shows a
# percentage-like value — CPU%, memory/disk usage, sensor temperatures.
warn_at = 70.0
crit_at = 90.0
[keymap.normal]
# Chord -> action name. Only the chords listed here change; every other
# chord keeps its compiled-in default. See "Action names" below for the
# full list of what you can bind. See keybindings.md for what each one
# does and which are contextual per-tab.
"j" = "move_down"
"k" = "move_up"
"dd" = "delete_selected"
theme
kanri reads the same live theme file a matugen-based rice pipeline
generates, and hot-reloads it on change — no restart needed. Every
field in that JSON is optional; kanri falls back to a built-in dark
palette (Catppuccin-Mocha-adjacent) for anything absent, including when
no theme file exists at all. Recognized keys (all optional): base,
surface, overlay, textPrimary, textSecondary, textMuted,
accentNetwork, accentSystem, success, warning, error — each a
"#rrggbb" hex string.
thresholds
Applies everywhere a value is shown as a percentage-like gauge or
colored number: below warn_at is “success” colored, between warn_at
and crit_at is “warning,” at or above crit_at is “error.”
keymap.normal
An overlay, not a replacement — set only the chords you want to change.
A chord can be any sequence of keys kanri’s input layer recognizes (a
single character like "j", or a short sequence like "gg"). An
unknown action name is logged and skipped at startup, not a fatal error.
Action names
The right-hand side of a keymap.normal entry — every name below is a
valid target:
move_down move_up move_left move_right
move_line_start jump_top jump_bottom
next_tab prev_tab
enter_command enter_search show_help quit
delete_selected up_selected down_selected
next_sub_view prev_sub_view trigger
connect_wifi toggle_extra
See keybindings.md for what each one does, including
the ones that are contextual per-tab (e.g. trigger starts a subnet
scan on the Scan sub-view, but toggles Tailscale on the Tailscale
sub-view).