Batonv0.3.9

Keybindings

Every action is a command with an id, and bindings are just data. To rebind, map ids to keys in [keys]:

[keys]
"app.palette" = ["ctrl+k"]
"pane.zoom" = ["z", "enter", "space"]
"toggle.icons" = "alt+i"            # commands without a default binding can get one
"app.shutdown" = []                 # unbind

Key syntax: modifiers ctrl, alt (meta, option and cmd are aliases) and shift, joined with +. Avoid ctrl+i, ctrl+m and ctrl+[: terminals send them as Tab, Enter and Escape. Names: letters, digits, symbols (?, @, /), enter, escape, tab, space, backspace, up / down / left / right, pageup / pagedown, home / end, f1–f12.

Contexts. A binding is active in one context:

The ? overlay lists your current bindings and flags any conflicts.

CommandDefaultContext
app.palettectrl+p, ctrl+kglobal
app.help?, f1grid
app.quit (stops all agents; /quit leaves them running)ctrl+c ×2global
app.shutdown (stop daemon + agents)ctrl+qglobal
inbox.open (everything that needs you) / approvals.allowctrl+a / ctrl+yglobal
attention.next (jump to the next ⚑)ctrl+nglobal
settings.openctrl+s, f2global
history.open (past runs: resume, export)ctrl+rglobal
costs.openctrl+eglobal
guide.open, recipes.open, welcome.open(unbound; /guide, /recipes, /welcome)global
theme.pickctrl+tglobal
style.pick (style gallery), toggle.background(unbound; /style, /background)global
autonomy.cycle (normal → auto → YOLO → ask, every agent)shift+tabinput
autonomy.yolo (toggle YOLO)(unbound; /yolo)global
changes.open (worker branches, diff, merge)ctrl+dglobal
tasks.open (task plan)ctrl+gglobal
pane.diffdgrid
layout.cyclectrl+lglobal
focus.next / focus.prevtab / shift+tabglobal
focus.inputesc, i, /, @grid
grid.left/right/up/downarrows, hjklgrid
grid.pageDown / grid.pageUppagedown / pageupglobal
pane.peek (peek & reply / answer its approval)spacegrid
pane.zoomz, entergrid
pane.copyPath (worktree path)ogrid
pane.messagem (prefills @name )grid
pane.interrupt / pane.killx / shift+xgrid
zoom.closeescape, q, zzoom
zoom.search / zoom.next / zoom.prev/ / n / shift+nzoom
zoom.copy / zoom.copyAll / zoom.savey / shift+y / wzoom
zoom.top / zoom.bottomg / shift+gzoom
orch.interruptescape (clears the input first)input
toggle.bus / toggle.thoughtsctrl+b / ctrl+oglobal
toggle.icons, toggle.border, toggle.look, toggle.density, toggle.animations(unbound; in the palette)global

In the approvals inbox: a/Enter allow once · A always allow · d deny · D always deny. In Changes: Enter/v diff · m merge · u undo merge · s sync · r review. In the inbox: a/A/d/D answer approvals, Enter jumps to anything else. In a peek: a/d answer, r reply, z zoom, v diff, x stop. In the diff view: m merge, Esc back. In the task plan: a approve / x reject a proposed plan. In the input: Tab completes @names, /commands and their arguments; ↑/↓ moves through history. Mouse: click a card to focus it, double-click to zoom.

Baton 0.3.9 · MIT · Edit this page on GitHub