BLOCKODILE
Keyboard

Shortcuts

Defaults, Settings → Keyboard, and the settings.json chord language.

Every static command has a default chord or is unbound (null — palette only). Change them in Settings → Keyboard: click a shortcut, press the new combo. Escape while recording clears it (unbound).

Hold-modifier session numbers are not recorded that way: they always follow Settings → General (Cmd/Super, Ctrl, or both).

Defaults

mod means the shortcut modifier picked in Settings → General, and every chord below follows it — pick once, the whole catalog moves. On a Mac with the default Both that is ⌘ or Ctrl; off a Mac the same slot is the Super (Windows) key, so the choice reads Super / Ctrl / Both there.

On Linux, Super belongs to the window manager: Both deliberately leaves it out (Hyprland grabs its own chords, and a swallowed key-up used to leave the sidebar numbers stuck), and choosing Super hands the app whatever your compositor does not already claim. A single command can always be rebound to any other key under Settings → Keyboard.

ActionDefault
Open command palettemod+k
Close command paletteescape
Open settingsmod+comma
Close settingsescape (same key as close palette; Settings closes if the palette is not open)
Toggle sidebarmod+b
Close sessionmod+w
New terminalmod+n
Paste into terminalmod+v — an image in the clipboard is handed to the agent as ^V, the way a native terminal does, so Claude Code or pi picks the image up itself
Copy terminal selectionmod+shift+c — never mod+c, which is the interrupt every shell expects on Linux. The selection belongs to xterm, so the focused terminal answers
New projectmod+shift+n
New window for a connectionmod+alt+n — opens the palette on the machines; one window per machine, an open one is brought to the front
Next / previous projectmod+arrowdown / mod+arrowup — walks the sidebar, wrapping around; empty projects are skipped
Move session up / downmod+shift+arrowup / mod+shift+arrowdown — reorders the sidebar like a drag; at the top or bottom of a project the session moves into the next one
Move project up / downmod+shift+pageup / mod+shift+pagedown — moves the whole project, sessions and all
Remove focused blockmod+backspace
Focus block left / right / up / downmod+alt+arrowleft … mod+alt+arrowdown
Swap block left / right / up / downmod+alt+shift+arrowleft …
Toggle block fullscreenmod+alt+f
Zoom in / out one levelmod+alt+i / mod+alt+o
Jump to session 1…9mod+1 … mod+9
Open the boardmod+shift+b — the kanban of agent tasks (GPUI app)
New board taskmod+shift+t
Start the selected cardmod+enter — in the New task form: add and start
Open PR / merge / send feedbackmod+shift+p / mod+shift+m / mod+shift+enter — only while the board is open
Open the card's sessionmod+o — only while the board is open, so the shell keeps Ctrl+O elsewhere. It opens over the board; mod+o again closes it (Escape stays the agent's)
Show the session full viewmod+shift+o — from the board or its session window, back to the terminal layout
Mark the session donemod+shift+d — only while the board is open: a session (not a task card) goes to Done, pressed again it goes back to Review. It leaves Done by itself when its agent starts working again
Delete the cardunbound — palette, or the Review screen
Rename session / projectunbound — palette
Remove empty project (Remove project: …)unbound — palette; context menu on empty row
Show in folder / copy pathunbound — palette
Save layoutunbound — palette
Focus next blockunbound — palette

Session 10 and up use the same hold-mod overlay: type the full number. See Jumping sessions.

Click a block header to focus it (accent border), or use ⌃⌥←↑↓→. ⌃⌥⇧ arrows swap, ⌃⌥F goes fullscreen, ⌃⌫ removes. How the grid reacts (edge rule, splits, repack, move … top right) is on Tiling blocks.

Block chords add Alt on purpose: plain Ctrl+arrows stay with the shell (word-jump), and Super+arrows / Super+F belong to the window manager. Because they are mod+alt+…, the same keys work on a Mac and on Linux. New shortcuts show up even if your settings.json was saved before they existed; Settings → Keyboard lists them.

Hold-⌘ session numbers jump sidebar sessions. Arrow chords move blocks on the current pane. They do not clash.

settings.json

App-wide knobs live in one file. Keyboard settings write keybindings here.

~/.config/blockodile/settings.json
{
  "version": 1,
  "overlayModifier": "both",
  "keybindings": {
    "palette.open": "mod+k",
    "pane.close": "mod+w",
    "pane.rename": null
  }
}
FieldMeaning
overlayModifier"cmd" (⌘ on a Mac, Super elsewhere) | "ctrl" | "both" — sidebar numbers and every mod+… chord
keybindingscommand id → chord string, or null to unbind
unknown idskept, so you can bind a dynamic id like add:files by hand

New commands in the app appear with their defaults without wiping your file.

Chord language

TokenMeaning
modfollows overlayModifier
cmd ctrl alt shiftexplicit modifiers (super, meta and win are accepted spellings of cmd)
escape comma backspace spacenamed keys
otherone key, case-insensitive (k, 1, arrowleft)

Examples: mod+k, cmd+shift+n, escape.

In Settings, Escape clears a recording. To bind Escape itself, set "escape" in the JSON.

Launchers (Claude, Cursor, …) keep their own store — Settings → Launchers — not this file. They still show up as New: … rows in the palette.

On this page