Skip to content

All Keybindings

This reference lists user-facing keys backed by Herald’s current key handlers and key hints. When a key appears in multiple sections, the most specific focused overlay or panel wins.

KeyResult
qQuit Herald from browse contexts. In Compose and search inputs, plain q is text.
ctrl+cQuit Herald from any state, including text inputs and overlays.
1 / Alt+1Switch to Timeline in browse contexts, or choose quick reply 1 when quick reply picker is open.
2 / Alt+2Switch/load Contacts in browse contexts, or choose quick reply 2 when quick reply picker is open.
3 / Alt+3Switch/load Calendar in browse contexts, or choose quick reply 3 when quick reply picker is open.
F1 / F2 / F3 / F4Aliases for Timeline / Contacts / Contacts legacy / Calendar.
F6 (tab / ctrl+i legacy)Cycle focus forward, except in search where ctrl+i can run server search.
Shift+F6 (shift+tab legacy)Cycle focus backward where supported.
h / j / k / lVim-profile and legacy Default navigation aliases where the active pane supports them.
BToggle folder sidebar.
gToggle the AI chat panel outside text-entry fields.
LToggle log viewer.
ctrl+rRefresh the current folder outside Timeline reply contexts.
SOpen settings.
Alt+AOpen the account switcher in Default browse contexts when multiple accounts exist.
?Open context-sensitive shortcut help in browse and non-text contexts. When help is open, / searches help and ?, esc, or q closes it.
escClose or unwind the active transient state.

These actions work when the terminal sends mouse events to Herald. OSC 8 link clicks are handled by the terminal, so compatible terminals open the real URL while Herald keeps the preview text readable; when mouse motion is available, hovered links brighten in place and the status bar previews the sanitized destination.

Mouse actionResult
Click top tabSwitch to Timeline, Contacts, or Calendar when available.
Click folder/sidebar rowSelect and load that folder.
Click Timeline rowSelect the message or thread and open the preview.
Scroll Timeline rowsMove the Timeline cursor by small steps.
Scroll Timeline previewScroll the message body.
Click Calendar mini-month daySelect that calendar day or range.
Click Calendar eventSelect the event. Double-click the same event to open its full detail.
Click Calendar checkboxShow or hide that calendar and persist the visible-calendar selection in YAML.
Hover OSC 8 email linkHighlight the visible link label and show a short sanitized destination preview in the status bar.
Click or Ctrl-click OSC 8 email linkOpen the target URL while Herald mouse navigation is enabled.
Press m in Timeline or CalendarRelease or restore Herald mouse capture for terminal-native text selection.
KeyResult
j / downMove down folder tree.
k / upMove up folder tree.
spaceExpand or collapse a folder tree node.
enterSelect folder or toggle a synthetic parent node.
KeyResult
enterOpen selected email, expand a collapsed thread, or open selected search result.
j / downMove down list, scroll preview, or move quick reply selection depending on focus.
k / upMove up list, scroll preview, or move quick reply selection depending on focus.
spaceToggle Timeline message or thread selection.
GCycle Timeline grouping between thread, sender, and domain views.
shift+up / shift+downExtend Timeline selection range when supported by the terminal; plain movement finishes the range and keeps selection.
V, then j / kUse fallback Timeline range selection without shifted-arrow support; press V or esc when done.
/ / ctrl+kOpen Timeline search.
ctrl+n (c legacy)Open a blank Compose screen for a new message.
*Toggle star on current email.
ctrl+r (R legacy)Reply sender-only to current email in Compose.
ctrl+shift+r (r legacy)Reply all to current email in Compose.
ctrl+f (f / F legacy)Forward current email in Compose.
delete (d / backspace legacy)Delete current/selected target after confirmation.
shift+delete (D / shift+backspace legacy)Delete current/selected target immediately, without confirmation.
A (a / e / E legacy)Archive the current message immediately; bulk archive still confirms.
TRe-classify current email with AI in Default; A re-classify is kept only by Vim/legacy-style profiles where feasible.
ctrl+d / ctrl+uScroll half a page down / up in scrollable list or preview contexts.
ctrl+qOpen quick reply picker.
zToggle full-screen reader when preview is open.
sSave selected attachment from preview.
[Select previous attachment.
]Select next attachment.
iCreate or update a calendar event from an email preview with text/calendar or .ics invitation data.
uUnsubscribe when preview body includes unsubscribe data.
HHide future mail from current sender.
vToggle visual text selection in preview/full-screen.
yStart yy line copy or copy visual selection.
YCopy full wrapped body.
mToggle mouse-selection mode.
Key or prefixResult
Plain queryLocal search while typing.
/b Body/FTS search over cached bodies.
/*Cross-folder cached search.
? prefix after /Semantic search when AI/embeddings are available.
enterRun search or focus existing results.
tab / ctrl+iRun server IMAP search from search input.
escClose preview, leave results, or clear search depending on current search state.
KeyResult
j / downMove to next reply.
k / upMove to previous reply.
enterOpen selected reply in Compose.
1 through 8Choose reply by number.
escClose picker.
KeyResult
Plain text and punctuationInsert text into the focused Compose field, including literal ?, /, and macOS Option-generated characters.
tabMove through To, CC, BCC, Subject, and Body; accept subject hint when visible.
ctrl+enterSend message.
ctrl+sSend fallback for terminals that do not report ctrl+enter.
ctrl+pToggle Markdown preview.
ctrl+xOpen the Compose body in $VISUAL or $EDITOR, then read it back on save and exit.
ctrl+aOpen outgoing attachment path prompt.
ctrl+kFocus the inline Compose AI prompt.
ctrl+jGenerate AI subject suggestion.
ctrl+enterAccept AI response into body while AI review owns focus.
escDismiss subject hint, AI panel, or compose status; then return to the screen that opened Compose.
up / downMove autocomplete selection when suggestions are visible.
enter / tabAccept autocomplete suggestion when visible.
escDismiss autocomplete or attachment prompt when active.
KeyResult
GCycle Timeline into sender or domain grouping.
spaceSelect the highlighted Timeline group or message.
delete (d / backspace legacy)Delete highlighted/selected mail after confirmation.
shift+delete (D / shift+backspace legacy)Delete highlighted/selected mail immediately, without confirmation.
A (a / e / E legacy)Archive highlighted/selected mail.
S then Sync & CleanupOpen automation-rule, custom-prompt, and cleanup-rule managers.
KeyResult
3 / F4Open Calendar when a calendar source is available.
tab / shift+tabCycle focus between calendar rail, main schedule/list, and detail or command panel.
j / downMove to the next visible event or result.
k / upMove to the previous visible event or result.
left / rightMove to the previous or next day, week, or 3-day range; h/l remain aliases.
wSwitch to Week Time-Grid.
dSwitch to Day Agenda.
tSwitch to 3-Day Command.
aSwitch to Agenda List.
/Open Calendar Search.
xOpen cross-source mail-and-calendar search when available.
enterOpen full event detail for the selected event.
ctrl+n / nOpen Event Create on a writable calendar source in the default profile.
nOpen Event Create in the Emacs profile; ctrl+n keeps moving down.
eOpen Event Edit for the selected event when the source supports it.
delete / DDelete the selected event after confirmation when the source supports deletion.
spaceShow or hide the focused calendar when the rail is focused.
pShow or hide past rows in Agenda when past rows are hidden.
mRelease or restore Herald mouse capture for terminal-native text selection.
escReturn from detail/search/edit to the previous Calendar view.
KeyResult
/Start keyword contact search.
?Open context-sensitive shortcut help.
? prefix after /Run semantic contact search when AI/embeddings are available.
Printable textAdd characters to active contact search.
backspace / ctrl+hDelete a search character.
enterConfirm search, open contact detail, or open recent email preview depending on focus.
escClear search, close inline preview, or return from detail.
tabToggle list/detail focus when detail is open.
j / downMove down contact list or recent emails.
k / upMove up contact list or recent emails.
eEnrich selected contact.

Herald resolves browse shortcuts through the active keyboard profile. Text-entry surfaces keep printable text literal in the Default profile; Vim and Custom profiles can use the modal Compose field adapter. Default bottom hints show preferred GUI-mail-style keys only, while legacy aliases remain active for at least one release and are listed here and in ? help.

Profile-owned browse scopes include the global, timeline, contacts, calendar, and compose command IDs exposed by the keymap catalog. Literal text-entry fields, editor-style inputs, and fixed confirmation controls keep their local keys so custom browse shortcuts do not steal typed message text, search queries, file paths, prompt text, or yes/no confirmation choices.

keyboard:
profile: default # default | vim | emacs | custom
custom_keymap: ~/.config/herald/keymaps/work.yaml

Custom keymap files extend a built-in profile and bind keys to predefined command IDs:

extends: default
bindings:
timeline:
normal:
x: compose.new
a: mail.archive_current
d: mail.delete_confirm
D: mail.delete_immediate
fields:
compose:
default_mode: normal # insert | normal | visual

Default exposes command IDs for custom keymaps including pane.next, pane.prev, account.switcher, compose.send, compose.attach, and compose.preview. Ctrl+, is intentionally not bound to Settings by default because many terminals do not report it reliably, but custom keymaps may bind it when their terminal does.

OverlayKeys
Delete/archive confirmationy/Y confirm, n/N/esc cancel.
Unsubscribe confirmationy/Y confirm, n/N/esc cancel.
Attachment save promptenter save, esc cancel, text edits path.
LogsL or esc close, j/k or arrows scroll, q quit.
Chatenter send, esc or tab close/leave chat, q quit.
Shortcut help/ search, j/k, arrows, page keys, home/end, or mouse wheel scroll; ?/esc/q close.
Calendar RSVP pickery accept, m maybe/tentative, n decline, esc cancel.
Calendar invitation importj/k choose calendar, enter create or update, s skip duplicate, r reconnect OAuth when available, esc cancel.
Rule editorLaunched from Settings Sync & Cleanup; form navigation, esc cancel.
Prompt editorLaunched from Settings Sync & Cleanup; form navigation, esc cancel.
Cleanup managerLaunched from Settings Sync & Cleanup; n new, enter edit, d/D delete, r run all, j/k move, esc close or cancel edit.
Settingsenter opens categories or accepts form controls, / filters the menu, tab moves fields, and esc unwinds filter/category state before closing.
OAuth waitenter opens browser to authorization URL.