gyute.fyi Grid home
Keyboard shortcuts

Reference

Keyboard shortcuts

5 min read

Use Cmd on macOS and Ctrl on Windows/Linux for the primary modifier.

Who owns a keystroke

Clanker has four input surfaces. Each one receives its own keyboard events, so each one decides what it handles:

SurfaceReceives keys fromHandles
App (toolbar, panels, dialogs)Renderer DOMapp commands
Editor (CodeMirror)Renderer DOMeditor and app commands, plus CodeMirror's own editing keys
Terminal (xterm)xterm's key handlerterminal commands only; every other key goes to the shell/TUI
Browser (native view)Electron before-input-event in the main processbrowser commands only; everything else goes to the page

A command only runs on a surface listed in its contexts. In particular, application commands never take keys from a focused terminal or browser page: with a terminal focused, Ctrl+S, Ctrl+B, Ctrl+T, Ctrl+W, and the like reach the terminal untouched.

Default shortcuts

These are the configurable commands (see Customizing shortcuts).

CommandDefaultWorks in
Open SettingsCmd/Ctrl+,App, editor
Fit All PanesCmd/Ctrl+Alt+FApp, editor, browser
Toggle Explorer (the FILES section in Sidebar mode)Cmd/Ctrl+BApp, editor
Save FileCmd/Ctrl+SEditor only
Zoom InCmd/Ctrl+= (Cmd/Ctrl+Shift+= and Cmd/Ctrl+numpad + also work until you rebind it)App, editor, terminal, browser
Zoom OutCmd/Ctrl+- (Cmd/Ctrl+numpad - also works until rebound)App, editor, terminal, browser
Reset ZoomCmd/Ctrl+0 (Cmd/Ctrl+numpad 0 also works until rebound)App, editor, terminal, browser
Focus Address BarCmd/Ctrl+LBrowser
New TabCmd/Ctrl+TBrowser
Close TabCmd/Ctrl+WBrowser
RefreshCmd/Ctrl+RBrowser
Next TabCtrl+TabBrowser
Previous TabCtrl+Shift+TabBrowser

On macOS the tab-cycling defaults use the literal Control key (Ctrl+Tab), because Cmd+Tab belongs to the operating system.

Fit All Panes used to be Cmd/Ctrl+Shift+F. That binding is no longer active; the new default is Cmd/Ctrl+Alt+F.

The browser commands run only while the native browser view has focus. Focus Address Bar moves keyboard focus to the Clanker address field of the active tab and selects it. New Tab, Close Tab, and Next/Previous Tab use the same actions as the tab strip: the last tab cannot be closed, and tab cycling follows tab order, wraps around, and does nothing with a single tab.

Zoom

Zoom follows focus:

FocusKeyboard zoomCtrl+wheel
Browser pageZooms that browser tabZooms that browser tab
TerminalZooms that terminal's fontZooms that terminal's font
Anywhere elseZooms the whole appZooms the whole app

Keyboard zoom bindings are configurable. Ctrl+wheel zoom is not: it is a fixed mouse gesture, handled by each surface directly, and is not part of the keybinding system.

Customizing shortcuts

Open Settings → Keyboard shortcuts... to search commands, see which differ from their defaults, change a binding, reset one command, or Reset All.

  • Click Edit, then press the new shortcut. The pressed keys do not run anything while recording. Esc cancels, Delete/Backspace unbinds the command, and modifier keys alone are ignored.
  • Each command has at most one binding. A binding needs a non-modifier key plus Ctrl/Cmd or Alt; plain keys and Shift-only keys are rejected so shortcuts can never steal ordinary typing. Stored settings that are invalid or conflicting are ignored and reset to the defaults.
  • Only your changes are stored; a command you never change always follows the built-in default. Explicitly unbinding a command is remembered separately from "no change".

Conflicts

Two commands conflict when they use the same keystroke and share a context. The same keystroke in non-overlapping contexts is allowed, which is why zoom keys are valid in terminal, browser, and app at once, and why Cmd/Ctrl+R can be Refresh in the browser while another command uses it elsewhere.

When a new binding conflicts, the dialog names the conflicting command and offers Cancel or Replace. Replace unbinds the other command (it does not fall back to its default), so the result is always unambiguous.

What is not configurable

These are interaction semantics of individual components, not Clanker commands, and they stay fixed:

  • Esc in dialogs, popovers, and inline create/rename fields; Enter to confirm
  • File tree and list arrow-key navigation, Enter/Space activation
  • Workspace tab and sidebar-row accessibility and reorder keys (Alt+Shift+←/→, Alt+Shift+↑/↓)
  • SSH directory chooser keys (below)
  • CodeMirror's own editing keys: arrows, selection, Cmd/Ctrl+Z undo, Cmd/Ctrl+Shift+Z/Cmd/Ctrl+Y redo, and the rest of its standard keymap
  • Terminal copy: Ctrl+Shift+C copies the xterm selection (selecting text also copies it)
  • Browser DevTools: Cmd/Ctrl+Shift+I and F12
  • Ctrl+wheel zoom

Workspace Tabs and Sidebar

ActionShortcutNotes
Move focused workspace tab left or right (Tabs mode)Alt+Shift+← / Alt+Shift+→Also available by dragging a tab; does not activate an inactive tab
Move focused workspace row up or down (Sidebar mode)Alt+Shift+↑ / Alt+Shift+↓Also available by dragging a row; does not activate an inactive workspace

SSH Remote Directory Chooser

ActionShortcut
Move through directory entries↑ / ↓
Open focused directoryEnter
Navigate to parent directoryBackspace or ← when focus is outside the New Folder input
Select the current directoryEnter when the chooser itself has focus
Close the chooserEscape
Cancel the New Folder formEscape while its input is focused

In the remote path field, ↑ / ↓ move through suggestions, Enter accepts a highlighted suggestion or opens the workspace, and Escape dismisses visible suggestions.