Your fingers
know the way.

dotstate supports three keymap presets — Standard, Vim, and Emacs — plus per-action overrides. Press ? in the TUI at any time to see the full key binding for the current view.

Pick a preset

In ~/.config/dotstate/config.toml:

[keymap]
preset = "vim"  # "standard" | "vim" | "emacs"

Presets at a glance

ActionStandardVimEmacs
Move downjCtrl+N
Move upkCtrl+P
Move right / next panelCtrl+F
Move left / prev panehCtrl+B
ConfirmEnterEnterEnter
Cancel / backEscEscCtrl+G
QuitqqCtrl+X Ctrl+C

Global keys

These work in every preset and every view:

?Toggle contextual help overlay
/Search the current list
rReload from disk
qQuit (also Ctrl+C)

Reach Settings from the main menu — there's no global hotkey for it.

Custom overrides

Any preset can be partially overridden. Specify the preset, then redefine only the actions you want to change:

[keymap]
preset = "vim"

[keymap.bindings]
# keep vim's hjkl, but rebind quit to Ctrl+Q
quit = "ctrl+q"
# multiple keys can bind to the same action
toggle_help = ["?", "F1"]

Supported key syntax

See what's bound right now

Inside the TUI, press ?. The help overlay shows every binding active in the current view, adjusted for your preset and overrides.

Next

Pair keymaps with a matching theme, or see the CLI reference.