atriumatrium

Keybindings

Rebinding shortcuts and authoring custom actions.

Every keyboard shortcut in atrium is customizable. The full default map is in Keyboard shortcuts.

Keybindings live under config.keybindings in ~/.atrium/config.json. The in-app editor is at Settings → Keyboard.

Chord format

A chord is a string like "cmd+shift+d" or "ctrl+alt+k". Rules:

  • Modifiers: cmd, shift, ctrl, alt. Order is normalized internally, so cmd+shift+d and shift+cmd+d are equivalent.
  • On macOS, cmd is the Command key.
  • The final segment is the key (lowercase). Named keys include enter, tab, escape, space, backspace, delete, up, down, left, right, backtick, minus, plus, equal, slash, bracket-left, bracket-right.
  • Chords are single-key only today. Two-step sequences (VS Code-style Cmd+K Cmd+S) are not yet supported.

Action types

Every binding maps to an action. There are three action types:

app-command

Triggers a built-in atrium operation:

{
  "cmd+d": { "type": "app-command", "command": "pane.split.horizontal" },
  "cmd+shift+w": { "type": "app-command", "command": "room.close" }
}

The full command list is visible in Settings → Keyboard — each default binding shows its command.

send-text

Sends raw text to the focused pane's PTY stdin. Useful for binding escape sequences or canned inputs:

{
  "shift+enter": { "type": "send-text", "text": "\n" },
  "alt+enter": { "type": "send-text", "text": "\r\n" }
}

Recognized escapes: \n (newline), \r (carriage return), \t (tab), \\ (literal backslash). Use \u001b for ESC when writing raw escape sequences.

uri-command

Dispatches an atrium:// protocol URI. This is the most flexible form — the URI resolver routes to pane, workspace, command, and hook operations. See atrium:// protocol.

{
  "cmd+shift+m": {
    "type": "uri-command",
    "uri": "atrium://commands/launcher.open?pane=$FOCUS"
  }
}

Unbinding a default

Set a binding to null to remove a default:

{
  "cmd+b": null
}

This removes atrium's Toggle sidebar default without replacing it.

Hand-editing vs the UI

The Settings UI covers the common case. You can hand-edit config.json for bulk changes or templated setups; atrium watches the file and reloads on change. Menu accelerators (the macOS native menu shortcuts) stay in sync with your keybindings automatically — you do not need to edit them separately.

Applying changes without a restart

Keybinding changes apply immediately in the current app session. To propagate into running shell sessions (for example, if a change affects ATRIUM_* variables that shells read), atrium sends a USR1 signal to every running atrium shell, which re-sources ~/.atrium/shell/env.sh. You do not need to press Enter in each shell.

Defaults you cannot overwrite

A small set of OS-level shortcuts (macOS's Command-Q, Command-Tab, Mission Control, and so on) are intercepted by the OS before atrium sees them. atrium does not override them.