main 5041353

keybindings.md RawHistoryFolder

Keybindings

Dumber uses modal keybindings. Pick the activation style with workspace.keymap:

  • zellij (default): each mode has its own activation key, listed below.
  • tmux: one prefix key, then a single action key. See Keymap presets.

Mode Activation

Mode Key Purpose
Pane Mode Ctrl+P Split, close, focus panes
Tab Mode Ctrl+T Create, close, switch tabs
Vim Mode Ctrl+Y Scroll, navigate headings, and focus page inputs with Vim-style commands; arrow keys stay native and page focus stays inside the page while other app shortcuts wait until exit
Resize Mode Ctrl+N Resize pane splits
Session Mode Ctrl+O Session management

Press Escape or Enter to exit any mode. Ctrl+Y can activate Vim Mode even when a page input is already focused, so you can use Vim commands without first moving focus away from the editor.

Keybinding tables use uppercase letters as visual labels for unshifted letter keys. In config, use lowercase (for example, ["w"] for Pane Mode eject). Shifted keys are shown with an explicit Shift+ prefix.

Default actions missing from your config are always active. Your own bindings override defaults (a default is skipped if one of its keys is already used in the same mode), and keys = [] disables an action.

Pane Mode (Ctrl+P)

Action Keys
Split right →, R
Split left ←, L
Split up ↑, U
Split down ↓, D
Stack pane S
Close pane X
Move to tab M
Move to next tab Shift+M
Eject to window W
Focus right Shift+→, Shift+L
Focus left Shift+←, Shift+H
Focus up Shift+↑, Shift+K
Focus down Shift+↓, Shift+J
Consume/expel left [
Consume/expel right ]
Consume/expel up {
Consume/expel down }
Confirm Enter
Cancel Escape

Tab Mode (Ctrl+T)

Action Keys
New tab N, C
Close tab X
Next tab L, Tab
Previous tab H, Shift+Tab
Rename tab R
Confirm Enter
Cancel Escape

Vim Mode (Ctrl+Y)

Vim Mode is an explicit Vim-style navigation mode for the active pane only. Its frame uses workspace.styling.vim_mode_color, a bottom-left VIM MODE toaster stays visible while the mode is active, and a shortcut legend expands from it after 500 ms. Click the toaster to collapse or expand the legend (the choice is saved in workspace.styling.mode_legend_collapsed and shared by all modes). Set workspace.styling.mode_legend to always or off to change the legend timing. The mode exits automatically when focus moves into the omnibox, find bar, overlays, or an editable element inside the page. The default timeout_ms is 0, so Vim Mode does not auto-time out unless you configure one. Arrow keys continue to flow through the browser engine's native page-navigation path while Vim Mode is active, while other app-level shortcuts stay suspended until you leave the mode. Ctrl+Y remains available when an editable page control is already focused.

CEF and WebKit execute Vim Mode scroll commands (h/j/k/l, Shift+J/K) with the shared BuildPageScrollByJS resolver. Each step starts under the viewport center, walks up through ancestors that can move in the requested direction, and hands scrolling to the document when a nested container reaches its boundary. Cross-origin frame contents remain best-effort.

gi focuses the next visible, editable page input. With no eligible input focused it starts at the first one; repeated gi commands cycle through the inputs. ]] and [[ move through visible h1–h6 headings and outline the selected heading with the current Dumber theme accent. Enter activates the first link inside the selected heading, or a link wrapping that heading, then leaves Vim Mode; without an associated link, it only leaves the mode. Escape leaves without activation. When a page input is focused, Tab and Shift+Tab keep focus traversal inside the page; traversal stops safely at the page boundaries instead of moving into the host window. These live input, heading, activation, and page-focus actions currently use the CEF engine path; the WebKit fallback supports Vim scrolling but not these semantic actions yet.

Link hints label the visible targets in the viewport; type a label to pick one, Backspace to undo a letter, and Escape to close the hints and stay in Vim Mode. f follows a link or activates a control, F opens a link in a new pane, and yf copies a link URL.

v starts visual selection. A non-empty selection that is visible in the viewport is used as is. Otherwise text-anchor hints label the visible text blocks; type a label to put the caret at the start of that text, or press Escape to place it at the first visible text of at least 50 characters (any visible text if none is that long). The mode indicator follows the page state: VIM MODE · HINTS, · CARET, · VISUAL, · VISUAL LINE.

In caret mode a large blinking accent cursor marks the position and motions move it without selecting: h/j/k/l, w/b/e, 0/^/$, (/) for sentences, {/} for paragraphs, gg/G for the document edges, and a count prefix such as 3w. The view scrolls to keep the cursor visible. v starts a character selection from the caret and V selects whole lines; in both, the same motions extend the selection and o swaps its ends. v in a selection returns to the caret, V in a character selection switches to lines, and v in a line selection switches to characters. y or Enter copies the selection and returns to the caret at its end, so you can keep moving and copy again. Escape steps back from a selection to the caret, and Escape in caret mode ends visual selection and leaves plain Vim Mode.

Text-object yanks copy one block without selecting it: yah copies the current section (the heading nearest the top of the viewport through the next heading of the same or a higher level), and yap, yac, yat, and yal copy the first visible paragraph, code block, table, or list. The copied block flashes with the theme accent. Hints, visual selection, and yanks use the CEF engine path.

While hints or visual selection are active, the page owns every key; the Vim Mode toggle shortcut (Ctrl+Y by default, or your activation_shortcut) is never forwarded to it. Pressing it always leaves Vim Mode and ends the interaction, so it is the way out even if a page misbehaves. Caret and visual selection anchor only to text in the page's main document: text inside shadow roots (some web components) is not offered as a caret position, while link hints and text-object yanks still reach into shadow DOM.

Action Keys
Scroll left H
Scroll down J
Scroll up K
Scroll right L
Scroll down fast Shift+J
Scroll up fast Shift+K
Focus next page input gi
Next heading ]]
Previous heading [[
Page focus traversal Tab, Shift+Tab
Follow link or control (hints) f
Open link in new pane (hints) F
Yank link URL (hints) yf
Visual selection (caret, character, line) v, V in caret mode
Yank section / paragraph / code / table / list yah, yap, yac, yat, yal
Activate selected heading link and exit Enter
Exit without activation Escape

Resize Mode (Ctrl+N)

Action Keys
Increase left H, ←
Increase down J, ↓
Increase up K, ↑
Increase right L, →
Decrease left Shift+H
Decrease down Shift+J
Decrease up Shift+K
Decrease right Shift+L
Increase (smart) +, =
Decrease (smart) -
Confirm Enter
Cancel Escape

Session Mode (Ctrl+O)

Action Keys
Session manager S, W
Confirm Enter
Cancel Escape

Keymap Presets

[workspace]
keymap = "tmux"   # or "zellij" (default)

With keymap = "tmux", the Pane, Tab, Resize, and Session activation keys are unbound. Press the prefix (Ctrl+Space by default), then one action key. Dumber runs the action and returns to normal mode; an unbound key or Escape cancels the prefix. Vim Mode keeps Ctrl+Y in both presets.

After Ctrl+Space Action
% Split right
" Split down
x Close pane
Shift+S Stack pane
! Move pane to another tab
← → ↑ ↓ Focus pane
c New tab
& Close tab
n / p Next / previous tab
, Rename tab
s Session manager
r Enter Resize Mode
[ Enter Vim Mode

Change the prefix or its actions under [workspace.prefix_mode]. Symbols such as % and " match whichever Shift state your layout needs, so write them without shift+. Ctrl+Space is often used to switch input methods; pick another prefix (for example alt+a) if your desktop already uses it.

[workspace.prefix_mode]
activation_shortcut = "alt+a"
timeout_ms = 2000

[workspace.prefix_mode.actions.split-right]
keys = ["%", "v"]

Global Shortcuts

These work outside modal modes in both keymaps. Every entry lives under [workspace.shortcuts.actions], so you can rebind it or disable it with keys = [].

Action Keys
Open omnibox Ctrl+L
Find in page / next / previous Ctrl+F / F3, Ctrl+G / Shift+F3, Ctrl+Shift+G
Reload / hard reload Ctrl+R, F5 / Ctrl+Shift+R, Ctrl+F5
Back / forward Ctrl+← / Ctrl+→
Zoom in / out / reset Ctrl++, Ctrl+= / Ctrl+- / Ctrl+0
Focus pane Alt+H/J/K/L, Alt+arrows
Copy URL Ctrl+Shift+C
Print Ctrl+Shift+P
Session manager Ctrl+Shift+S
Developer tools F12
Fullscreen F11
Quit Ctrl+Q
Toggle floating pane Alt+F
Toggle History sidebar (native GTK sidebar panel only). Ctrl+H may conflict with the browser's default History shortcut; behavior can vary by browser. Ctrl+H
Toggle Favorites sidebar (native GTK bookmarks panel) Ctrl+B
Toggle current page favorite/bookmark Ctrl+D
Toggle Config system view in right split unbound by default
Close pane (or release floating pane) Ctrl+W
Next tab Ctrl+Tab
Previous tab Ctrl+Shift+Tab
Consume/expel left Alt+[
Consume/expel right Alt+]
Consume/expel up Alt+{
Consume/expel down Alt+}
  • Alt+F is the only floating-pane shortcut enabled by default.
  • Alt+F toggles floating visibility and keeps floating pane state intact.
  • Ctrl+H toggles the native GTK history sidebar. The sidebar shows browsing history grouped by day with search/filter, keyboard navigation (arrows, Home/End, Ctrl+arrows for day jumps), and activation modes (Enter to navigate while keeping the sidebar open, Ctrl+Enter to navigate while keeping the sidebar open, Shift+Enter to open in a new split). If the native sidebar is unavailable, the shortcut returns an error instead of falling back to dumb://history.
  • Ctrl+B toggles the native GTK Favorites sidebar. Search matches favorite titles, URLs, and tag names. Tab/Shift+Tab traverse search, every tag filter, and the favorites list; arrow keys navigate favorites once the list is focused. The + at the right end of the tag-filter row creates a named tag. With a favorite selected in the list, + opens its tag binding controls. Enter and Ctrl+Enter open the selected favorite in the current pane while keeping the sidebar open; Shift+Enter opens it in a new split. Inside the sidebar, a adds, e edits, s opens shortcut mode, Delete starts delete confirmation, / focuses search, Esc clears/cancels/closes, r reloads, and c clears search and filters.
  • Ctrl+D toggles the active page as a favorite/bookmark. Favorite shortcut metadata can be assigned in the sidebar, but global Alt+1..9 remains tab switching.
  • Ctrl+W closes the active pane; when the floating pane is active, it fully releases that floating session.
  • Any URL shortcut (for example Alt+G) must be defined explicitly in workspace.floating_pane.profiles.
  • Floating profile shortcuts support modifier combos with ctrl, shift, and alt (for example ctrl+shift+y or ctrl+alt+m).

Warning: some Alt+<key> combinations may conflict with browser-engine shortcuts, website handlers, or your desktop environment. If a shortcut does not trigger in Dumber, choose a different keybinding.

For details, see Floating Pane.

Customization

All keybindings can be customized in ~/.config/dumber/config.toml:

[workspace.pane_mode.actions]
split-right = ["arrowright", "r"]
close-pane = ["x", "q"]

[workspace.vim_mode]
activation_shortcut = "ctrl+y"
timeout_ms = 0

[workspace.vim_mode.actions.vim-scroll-left]
keys = ["h"]

[workspace.vim_mode.actions.vim-scroll-down]
keys = ["j"]

[workspace.vim_mode.actions.vim-scroll-up]
keys = ["k"]

[workspace.vim_mode.actions.vim-scroll-right]
keys = ["l"]

[workspace.vim_mode.actions.vim-scroll-down-fast]
keys = ["shift+j"]

[workspace.vim_mode.actions.vim-scroll-up-fast]
keys = ["shift+k"]

[workspace.vim_mode.actions.focus-input]
keys = ["gi"]

[workspace.vim_mode.actions.heading-next]
keys = ["]]"]

[workspace.vim_mode.actions.heading-prev]
keys = ["[["]

[workspace.vim_mode.actions.hint-follow]
keys = ["f"]

[workspace.vim_mode.actions.hint-follow-new]
keys = ["F"]

[workspace.vim_mode.actions.hint-yank-url]
keys = ["yf"]

[workspace.vim_mode.actions.visual]
keys = ["v"]

[workspace.vim_mode.actions.yank-section]
keys = ["yah"]

[workspace.vim_mode.actions.yank-paragraph]
keys = ["yap"]

[workspace.vim_mode.actions.yank-code]
keys = ["yac"]

[workspace.vim_mode.actions.yank-table]
keys = ["yat"]

[workspace.vim_mode.actions.yank-list]
keys = ["yal"]

[workspace.shortcuts.actions.close-pane]
keys = ["ctrl+w"]

[workspace.shortcuts.actions.toggle-floating-pane]
keys = ["alt+f"]

[workspace.shortcuts.actions.toggle-history-systemview]
keys = ["ctrl+h"]

[workspace.shortcuts.actions.toggle-favorites-sidebar]
keys = ["ctrl+b"]

[workspace.shortcuts.actions.toggle-current-page-favorite]
keys = ["ctrl+d"]

[workspace.shortcuts.actions.toggle-config-systemview]
keys = []

[workspace.floating_pane]
width_pct = 0.82
height_pct = 0.72

[workspace.floating_pane.profiles.google]
keys = ["alt+g"]
url = "https://google.com"

[workspace.floating_pane.profiles.github]
keys = ["alt+h"]
url = "https://github.com"

See Configuration for full details.

source
1# Keybindings
2
3Dumber uses modal keybindings. Pick the activation style with `workspace.keymap`:
4
5- `zellij` (default): each mode has its own activation key, listed below.
6- `tmux`: one prefix key, then a single action key. See [Keymap presets](#keymap-presets).
7
8## Mode Activation
9
10| Mode | Key | Purpose |
11|------|-----|---------|
12| Pane Mode | `Ctrl+P` | Split, close, focus panes |
13| Tab Mode | `Ctrl+T` | Create, close, switch tabs |
14| Vim Mode | `Ctrl+Y` | Scroll, navigate headings, and focus page inputs with Vim-style commands; arrow keys stay native and page focus stays inside the page while other app shortcuts wait until exit |
15| Resize Mode | `Ctrl+N` | Resize pane splits |
16| Session Mode | `Ctrl+O` | Session management |
17
18Press `Escape` or `Enter` to exit any mode.
19`Ctrl+Y` can activate Vim Mode even when a page input is already focused, so you can use Vim commands without first moving focus away from the editor.
20
21Keybinding tables use uppercase letters as visual labels for unshifted letter keys. In config, use lowercase (for example, `["w"]` for Pane Mode eject). Shifted keys are shown with an explicit `Shift+` prefix.
22
23Default actions missing from your config are always active. Your own bindings override defaults (a default is skipped if one of its keys is already used in the same mode), and `keys = []` disables an action.
24
25## Pane Mode (`Ctrl+P`)
26
27| Action | Keys |
28|--------|------|
29| Split right | `→`, `R` |
30| Split left | `←`, `L` |
31| Split up | `↑`, `U` |
32| Split down | `↓`, `D` |
33| Stack pane | `S` |
34| Close pane | `X` |
35| Move to tab | `M` |
36| Move to next tab | `Shift+M` |
37| Eject to window | `W` |
38| Focus right | `Shift+→`, `Shift+L` |
39| Focus left | `Shift+←`, `Shift+H` |
40| Focus up | `Shift+↑`, `Shift+K` |
41| Focus down | `Shift+↓`, `Shift+J` |
42| Consume/expel left | `[` |
43| Consume/expel right | `]` |
44| Consume/expel up | `{` |
45| Consume/expel down | `}` |
46| Confirm | `Enter` |
47| Cancel | `Escape` |
48
49## Tab Mode (`Ctrl+T`)
50
51| Action | Keys |
52|--------|------|
53| New tab | `N`, `C` |
54| Close tab | `X` |
55| Next tab | `L`, `Tab` |
56| Previous tab | `H`, `Shift+Tab` |
57| Rename tab | `R` |
58| Confirm | `Enter` |
59| Cancel | `Escape` |
60
61## Vim Mode (`Ctrl+Y`)
62
63Vim Mode is an explicit Vim-style navigation mode for the active pane only. Its frame uses `workspace.styling.vim_mode_color`, a bottom-left `VIM MODE` toaster stays visible while the mode is active, and a shortcut legend expands from it after 500 ms. Click the toaster to collapse or expand the legend (the choice is saved in `workspace.styling.mode_legend_collapsed` and shared by all modes). Set `workspace.styling.mode_legend` to `always` or `off` to change the legend timing. The mode exits automatically when focus moves into the omnibox, find bar, overlays, or an editable element inside the page. The default `timeout_ms` is `0`, so Vim Mode does not auto-time out unless you configure one. Arrow keys continue to flow through the browser engine's native page-navigation path while Vim Mode is active, while other app-level shortcuts stay suspended until you leave the mode. `Ctrl+Y` remains available when an editable page control is already focused.
64
65CEF and WebKit execute Vim Mode scroll commands (`h/j/k/l`, `Shift+J/K`) with the shared `BuildPageScrollByJS` resolver. Each step starts under the viewport center, walks up through ancestors that can move in the requested direction, and hands scrolling to the document when a nested container reaches its boundary. Cross-origin frame contents remain best-effort.
66
67`gi` focuses the next visible, editable page input. With no eligible input focused it starts at the first one; repeated `gi` commands cycle through the inputs. `]]` and `[[` move through visible `h1`–`h6` headings and outline the selected heading with the current Dumber theme accent. `Enter` activates the first link inside the selected heading, or a link wrapping that heading, then leaves Vim Mode; without an associated link, it only leaves the mode. `Escape` leaves without activation. When a page input is focused, `Tab` and `Shift+Tab` keep focus traversal inside the page; traversal stops safely at the page boundaries instead of moving into the host window. These live input, heading, activation, and page-focus actions currently use the CEF engine path; the WebKit fallback supports Vim scrolling but not these semantic actions yet.
68
69Link hints label the visible targets in the viewport; type a label to pick one, `Backspace` to undo a letter, and `Escape` to close the hints and stay in Vim Mode. `f` follows a link or activates a control, `F` opens a link in a new pane, and `yf` copies a link URL.
70
71`v` starts visual selection. A non-empty selection that is visible in the viewport is used as is. Otherwise text-anchor hints label the visible text blocks; type a label to put the caret at the start of that text, or press `Escape` to place it at the first visible text of at least 50 characters (any visible text if none is that long). The mode indicator follows the page state: `VIM MODE · HINTS`, `· CARET`, `· VISUAL`, `· VISUAL LINE`.
72
73In caret mode a large blinking accent cursor marks the position and motions move it without selecting: `h/j/k/l`, `w/b/e`, `0`/`^`/`$`, `(`/`)` for sentences, `{`/`}` for paragraphs, `gg`/`G` for the document edges, and a count prefix such as `3w`. The view scrolls to keep the cursor visible. `v` starts a character selection from the caret and `V` selects whole lines; in both, the same motions extend the selection and `o` swaps its ends. `v` in a selection returns to the caret, `V` in a character selection switches to lines, and `v` in a line selection switches to characters. `y` or `Enter` copies the selection and returns to the caret at its end, so you can keep moving and copy again. `Escape` steps back from a selection to the caret, and `Escape` in caret mode ends visual selection and leaves plain Vim Mode.
74
75Text-object yanks copy one block without selecting it: `yah` copies the current section (the heading nearest the top of the viewport through the next heading of the same or a higher level), and `yap`, `yac`, `yat`, and `yal` copy the first visible paragraph, code block, table, or list. The copied block flashes with the theme accent. Hints, visual selection, and yanks use the CEF engine path.
76
77While hints or visual selection are active, the page owns every key; the Vim Mode toggle shortcut (`Ctrl+Y` by default, or your `activation_shortcut`) is never forwarded to it. Pressing it always leaves Vim Mode and ends the interaction, so it is the way out even if a page misbehaves. Caret and visual selection anchor only to text in the page's main document: text inside shadow roots (some web components) is not offered as a caret position, while link hints and text-object yanks still reach into shadow DOM.
78
79| Action | Keys |
80|--------|------|
81| Scroll left | `H` |
82| Scroll down | `J` |
83| Scroll up | `K` |
84| Scroll right | `L` |
85| Scroll down fast | `Shift+J` |
86| Scroll up fast | `Shift+K` |
87| Focus next page input | `gi` |
88| Next heading | `]]` |
89| Previous heading | `[[` |
90| Page focus traversal | `Tab`, `Shift+Tab` |
91| Follow link or control (hints) | `f` |
92| Open link in new pane (hints) | `F` |
93| Yank link URL (hints) | `yf` |
94| Visual selection (caret, character, line) | `v`, `V` in caret mode |
95| Yank section / paragraph / code / table / list | `yah`, `yap`, `yac`, `yat`, `yal` |
96| Activate selected heading link and exit | `Enter` |
97| Exit without activation | `Escape` |
98
99## Resize Mode (`Ctrl+N`)
100
101| Action | Keys |
102|--------|------|
103| Increase left | `H`, `←` |
104| Increase down | `J`, `↓` |
105| Increase up | `K`, `↑` |
106| Increase right | `L`, `→` |
107| Decrease left | `Shift+H` |
108| Decrease down | `Shift+J` |
109| Decrease up | `Shift+K` |
110| Decrease right | `Shift+L` |
111| Increase (smart) | `+`, `=` |
112| Decrease (smart) | `-` |
113| Confirm | `Enter` |
114| Cancel | `Escape` |
115
116## Session Mode (`Ctrl+O`)
117
118| Action | Keys |
119|--------|------|
120| Session manager | `S`, `W` |
121| Confirm | `Enter` |
122| Cancel | `Escape` |
123
124## Keymap Presets
125
126```toml
127[workspace]
128keymap = "tmux"   # or "zellij" (default)
129```
130
131With `keymap = "tmux"`, the Pane, Tab, Resize, and Session activation keys are unbound. Press the prefix (`Ctrl+Space` by default), then one action key. Dumber runs the action and returns to normal mode; an unbound key or `Escape` cancels the prefix. Vim Mode keeps `Ctrl+Y` in both presets.
132
133| After `Ctrl+Space` | Action |
134|--------------------|--------|
135| `%` | Split right |
136| `"` | Split down |
137| `x` | Close pane |
138| `Shift+S` | Stack pane |
139| `!` | Move pane to another tab |
140| `←` `→` `↑` `↓` | Focus pane |
141| `c` | New tab |
142| `&` | Close tab |
143| `n` / `p` | Next / previous tab |
144| `,` | Rename tab |
145| `s` | Session manager |
146| `r` | Enter Resize Mode |
147| `[` | Enter Vim Mode |
148
149Change the prefix or its actions under `[workspace.prefix_mode]`. Symbols such as `%` and `"` match whichever Shift state your layout needs, so write them without `shift+`. `Ctrl+Space` is often used to switch input methods; pick another prefix (for example `alt+a`) if your desktop already uses it.
150
151```toml
152[workspace.prefix_mode]
153activation_shortcut = "alt+a"
154timeout_ms = 2000
155
156[workspace.prefix_mode.actions.split-right]
157keys = ["%", "v"]
158```
159
160## Global Shortcuts
161
162These work outside modal modes in both keymaps. Every entry lives under `[workspace.shortcuts.actions]`, so you can rebind it or disable it with `keys = []`.
163
164| Action | Keys |
165|--------|------|
166| Open omnibox | `Ctrl+L` |
167| Find in page / next / previous | `Ctrl+F` / `F3`, `Ctrl+G` / `Shift+F3`, `Ctrl+Shift+G` |
168| Reload / hard reload | `Ctrl+R`, `F5` / `Ctrl+Shift+R`, `Ctrl+F5` |
169| Back / forward | `Ctrl+←` / `Ctrl+→` |
170| Zoom in / out / reset | `Ctrl++`, `Ctrl+=` / `Ctrl+-` / `Ctrl+0` |
171| Focus pane | `Alt+H/J/K/L`, `Alt+arrows` |
172| Copy URL | `Ctrl+Shift+C` |
173| Print | `Ctrl+Shift+P` |
174| Session manager | `Ctrl+Shift+S` |
175| Developer tools | `F12` |
176| Fullscreen | `F11` |
177| Quit | `Ctrl+Q` |
178| Toggle floating pane | `Alt+F` |
179| Toggle History sidebar (native GTK sidebar panel only). Ctrl+H may conflict with the browser's default History shortcut; behavior can vary by browser. | `Ctrl+H` |
180| Toggle Favorites sidebar (native GTK bookmarks panel) | `Ctrl+B` |
181| Toggle current page favorite/bookmark | `Ctrl+D` |
182| Toggle Config system view in right split | unbound by default |
183| Close pane (or release floating pane) | `Ctrl+W` |
184| Next tab | `Ctrl+Tab` |
185| Previous tab | `Ctrl+Shift+Tab` |
186| Consume/expel left | `Alt+[` |
187| Consume/expel right | `Alt+]` |
188| Consume/expel up | `Alt+{` |
189| Consume/expel down | `Alt+}` |
190
191- `Alt+F` is the only floating-pane shortcut enabled by default.
192- `Alt+F` toggles floating visibility and keeps floating pane state intact.
193- `Ctrl+H` toggles the native GTK history sidebar. The sidebar shows browsing history grouped by day with search/filter, keyboard navigation (arrows, Home/End, Ctrl+arrows for day jumps), and activation modes (Enter to navigate while keeping the sidebar open, Ctrl+Enter to navigate while keeping the sidebar open, Shift+Enter to open in a new split). If the native sidebar is unavailable, the shortcut returns an error instead of falling back to `dumb://history`.
194- `Ctrl+B` toggles the native GTK Favorites sidebar. Search matches favorite titles, URLs, and tag names. `Tab`/`Shift+Tab` traverse search, every tag filter, and the favorites list; arrow keys navigate favorites once the list is focused. The `+` at the right end of the tag-filter row creates a named tag. With a favorite selected in the list, `+` opens its tag binding controls. `Enter` and `Ctrl+Enter` open the selected favorite in the current pane while keeping the sidebar open; `Shift+Enter` opens it in a new split. Inside the sidebar, `a` adds, `e` edits, `s` opens shortcut mode, `Delete` starts delete confirmation, `/` focuses search, `Esc` clears/cancels/closes, `r` reloads, and `c` clears search and filters.
195- `Ctrl+D` toggles the active page as a favorite/bookmark. Favorite shortcut metadata can be assigned in the sidebar, but global `Alt+1..9` remains tab switching.
196- `Ctrl+W` closes the active pane; when the floating pane is active, it fully releases that floating session.
197- Any URL shortcut (for example `Alt+G`) must be defined explicitly in `workspace.floating_pane.profiles`.
198- Floating profile shortcuts support modifier combos with `ctrl`, `shift`, and `alt` (for example `ctrl+shift+y` or `ctrl+alt+m`).
199
200Warning: some `Alt+<key>` combinations may conflict with browser-engine shortcuts, website handlers, or your desktop environment.
201If a shortcut does not trigger in Dumber, choose a different keybinding.
202
203For details, see [Floating Pane](./floating-pane.md).
204
205## Customization
206
207All keybindings can be customized in `~/.config/dumber/config.toml`:
208
209```toml
210[workspace.pane_mode.actions]
211split-right = ["arrowright", "r"]
212close-pane = ["x", "q"]
213
214[workspace.vim_mode]
215activation_shortcut = "ctrl+y"
216timeout_ms = 0
217
218[workspace.vim_mode.actions.vim-scroll-left]
219keys = ["h"]
220
221[workspace.vim_mode.actions.vim-scroll-down]
222keys = ["j"]
223
224[workspace.vim_mode.actions.vim-scroll-up]
225keys = ["k"]
226
227[workspace.vim_mode.actions.vim-scroll-right]
228keys = ["l"]
229
230[workspace.vim_mode.actions.vim-scroll-down-fast]
231keys = ["shift+j"]
232
233[workspace.vim_mode.actions.vim-scroll-up-fast]
234keys = ["shift+k"]
235
236[workspace.vim_mode.actions.focus-input]
237keys = ["gi"]
238
239[workspace.vim_mode.actions.heading-next]
240keys = ["]]"]
241
242[workspace.vim_mode.actions.heading-prev]
243keys = ["[["]
244
245[workspace.vim_mode.actions.hint-follow]
246keys = ["f"]
247
248[workspace.vim_mode.actions.hint-follow-new]
249keys = ["F"]
250
251[workspace.vim_mode.actions.hint-yank-url]
252keys = ["yf"]
253
254[workspace.vim_mode.actions.visual]
255keys = ["v"]
256
257[workspace.vim_mode.actions.yank-section]
258keys = ["yah"]
259
260[workspace.vim_mode.actions.yank-paragraph]
261keys = ["yap"]
262
263[workspace.vim_mode.actions.yank-code]
264keys = ["yac"]
265
266[workspace.vim_mode.actions.yank-table]
267keys = ["yat"]
268
269[workspace.vim_mode.actions.yank-list]
270keys = ["yal"]
271
272[workspace.shortcuts.actions.close-pane]
273keys = ["ctrl+w"]
274
275[workspace.shortcuts.actions.toggle-floating-pane]
276keys = ["alt+f"]
277
278[workspace.shortcuts.actions.toggle-history-systemview]
279keys = ["ctrl+h"]
280
281[workspace.shortcuts.actions.toggle-favorites-sidebar]
282keys = ["ctrl+b"]
283
284[workspace.shortcuts.actions.toggle-current-page-favorite]
285keys = ["ctrl+d"]
286
287[workspace.shortcuts.actions.toggle-config-systemview]
288keys = []
289
290[workspace.floating_pane]
291width_pct = 0.82
292height_pct = 0.72
293
294[workspace.floating_pane.profiles.google]
295keys = ["alt+g"]
296url = "https://google.com"
297
298[workspace.floating_pane.profiles.github]
299keys = ["alt+h"]
300url = "https://github.com"
301```
302
303See [Configuration](../config/index.md) for full details.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close