# Keybindings

Every default keybinding, grouped by what you want to do, plus how to rebind.

Every default binding, grouped by intent. `Super` is scoot's own modifier
throughout; directions are vim's `h` `j` `k` `l`.
The rightmost column is the action string — the same grammar `scootctl action`
takes and `[binds]` uses, so each row is also its own rebind recipe.

## Move around

| Keys | Does | Action |
|---|---|---|
| `Super`+`h` / `l` | Focus column left / right | `focus-column left\|right` |
| `Super`+`j` / `k` | Focus window down / up | `focus-window down\|up` |
| `Super`+`Ctrl`+`j` / `k` | Focus workspace down / up | `focus-workspace down\|up` |
| `Super`+`1`…`9` | Focus workspace 1–9 directly | `focus-workspace-index N` |
| `Super`+`comma` / `period` | Focus output left / right (wraps) | `focus-output-left\|right` |
| `Super`+`Space` | Move focus between floating windows and the strip | `toggle-floating-focus` |

Targeting a workspace that doesn't exist yet does nothing — it neither
creates one nor falls back. (Empty workspaces are dropped, so an index only
means something against the list it was read from.)

## Move windows

| Keys | Does | Action |
|---|---|---|
| `Super`+`Shift`+`h` / `l` | Move column left / right | `move-column left\|right` |
| `Super`+`Shift`+`j` / `k` | Move window down / up | `move-window down\|up` |
| `Super`+`Ctrl`+`Shift`+`j` / `k` | Move window to workspace down / up | `move-window-to-workspace down\|up` |
| `Super`+`Shift`+`1`…`9` | Move window to workspace 1–9 | `move-window-to-workspace-index N` |
| `Super`+`Shift`+`comma` / `period` | Move window to output left / right (and follow it) | `move-window-to-output-left\|right` |
| `Super`+`Alt`+`h` / `l` | Consume into / expel from a column | `consume-or-expel left\|right` |

## Shape windows

| Keys | Does | Action |
|---|---|---|
| `Super`+`r` | Cycle the column's width | `cycle-column-width` |
| `Super`+`f` | Fullscreen on / off | `toggle-fullscreen` |
| `Super`+`m` | Maximize on / off (bar stays visible) | `toggle-maximize` |
| `Super`+`Shift`+`Space` | Float the window, or put it back | `toggle-floating` |
| `Super`+drag | Move / resize a floating window (left / right button) | `[floating] modifier` |

## Launch and leave

| Keys | Does | Action |
|---|---|---|
| `Super`+`Return` | Open a terminal (`foot`) | `spawn foot` |
| `Super`+`q` | Close the focused window | `close` |
| `Super`+`Shift`+`e` | Quit scoot | `quit` |

Quit is deliberately `Super`+`Shift`+`e`, not
`Super`+`Shift`+`q`: one slipped Shift away from
"close window", and a slip shouldn't end the whole session.

Under `--tty`, `Ctrl`+`Alt`+`F1`…`F12`
additionally switch VTs — always winning over config binds, so the recovery
path survives a bad config.

## Change one binding

Bindings live in `[binds]` in `~/.config/scoot/config.toml`: `"combo" =
"action string"`. Combos are `modifier+modifier+...+key`
(`super+shift+h`); names are case-insensitive; a capital letter names the
*unshifted* key, so Shift chords spell Shift out. To open a different
terminal:

```toml
[binds]
"super+Return" = "spawn alacritty"
```

Then apply it without restarting:

```sh
scootctl reload
```

Keybindings reload live — like the layout, outputs, appearance, floating
rules and autostart. Only `[tty] gpu`, `[renderer] backend`,
`[xwayland] enabled` and an output's `mode` need a restart, and a reload
says so by name instead of silently ignoring them. A mistake never stops
scoot from starting: it logs the problem and uses the default.

Want the whole file, commented? `scoot --print-default-config --write`
writes it once (and refuses rather than overwriting).
