The 10 keys that get you 80% of mxr
If you only learn ten, learn these:
Key Action Ctrl-pCommand palette — searchable surface for everything below ?Help modal (context-aware) j / kMove down / up EnterOpen selected message or thread eArchive rReply cCompose sStar / unstar ZSnooze (preset list + custom-time entry) /Search
Everything else is discoverable from the palette (Ctrl-p) and the
help modal (?).
Key Action 1–7Switch Mailbox / Search / Rules / Accounts / Diagnostics / Analytics / Deliveries Ctrl-pOpen command palette gcEdit config gLOpen logs ?Toggle help modal EscBack, close modal, dismiss pane, or clear selection qQuit current view or exit
Key Action j / ↓Move down k / ↑Move up ggJump to top GJump to bottom Ctrl-dPage down Ctrl-uPage up H / M / LViewport top / middle / bottom zzCenter current item Enter / oOpen selected row TabSwitch pane FToggle fullscreen / full reader layout /Open full-index Search Ctrl-fFilter current mailbox only n / NNext / previous search result
Key Action cCompose rReply aReply all fForward ySummarize thread in the background eArchive mMark read + archive #Trash !Mark spam sStar / unstar IMark read UMark unread lApply label vMove to label DUnsubscribe ZSnooze bBookmark for reply-later OOpen in browser RToggle reader mode HToggle HTML view MToggle remote content (HTML images) SToggle signature display EExport thread
Key Action xToggle row selection VVisual line selection EscClear selection
Key Action 1Mailbox 2Search 3Rules 4Accounts 5Diagnostics 6Analytics 7Deliveries
Key Action giGo to Inbox gsGo to Starred gtGo to Sent gdGo to Drafts gaGo to All Mail glGo to Label (picker) gcEdit config (opens $EDITOR) gLShow recent logs g 1–g 9Jump to saved-search 1–9 g 0Return to default inbox (clear saved-search filter)
Key Action j / kScroll body RToggle reader mode HToggle HTML view MToggle remote content (HTML images) SToggle signature display OOpen in browser AOpen attachment modal LOpen links modal (jump to any URL in the body) FToggle fullscreen / full reader layout rReply aReply all fForward ySummarize thread in the background eArchive mMark read + archive #Trash !Mark spam sStar / unstar IMark read UMark unread 1–7Switch primary tab (Mailbox / Search / Rules / Accounts / Diagnostics / Analytics / Deliveries) gcEdit config gLShow recent logs DUnsubscribe
Key Action j / kMove focused message in thread rReply to focused message aReply all to focused message fForward focused message ySummarize thread in the background AOpen attachment modal LOpen links modal FToggle fullscreen / full reader layout RToggle reader mode HToggle HTML view MToggle remote content SToggle signature EExport thread OOpen in browser eArchive mMark read + archive #Trash !Mark spam sStar / unstar IMark read UMark unread DUnsubscribe 1–7Switch primary tab gc / gLEdit config / show logs
Key Action [ / ]Collapse / expand the focused sidebar section nNew saved search (when the sidebar’s saved-searches list is focused) eEdit the focused saved search dDelete the focused saved search (with confirm) g 1–g 9Jump to saved-search 1–9 g 0Clear saved-search filter (return to default inbox)
Open from the Calendar invites sidebar item. The list pane shows every
detected invite with inline RSVP.
Key Action j / kMove down / up aAccept t or mTentative dDecline A / T (or M) / DAccept / Tentative / Decline with a comment (opens compose) uUndo the just-issued RSVP (within its send window) Enter / oOpen the underlying message hBack to the sidebar
The Analytics screen has six views. Cycle them with Tab / Shift-Tab; refresh the active view with r.
View Key Action Storage mToggle Breakdown ↔ Largest-Messages mode Storage gCycle group_by (sender / mimetype / label) in Breakdown mode Stale Threads pToggle perspective (mine ↔ theirs) Stale Threads [ / ]±7 days on older_than_days Stale Threads { / }±30 days on within_days Contacts mCycle sub-mode (asymmetry / decay / refresh) Contacts RRefresh the materialized contacts table Response Time dToggle direction (clock ↔ business hours) Subscriptions oToggle ranking (volume ↔ open-rate) Subscriptions uOpen the unsubscribe-confirm modal for the selected row Wrapped h / j / k / lMove between dashboard tiles Wrapped y / YStep year (back / forward) Wrapped tCycle window kind (YTD → Year → SinceDays)
Key Action Tab / Shift-TabCycle views rRefresh active view EnterDrill down (sender → search filter; thread row → open conversation) fOpen the filter modal — every CLI flag for the active view as an editable field EscReturn to Mailbox
Open with 7. Lists tracked packages detected in your mail.
Key Action j / kMove selection o / EnterOpen the source email inline in a split preview Ctrl-d / Ctrl-uScroll the open email (when the preview is showing) rResolve (mark delivered/done) dDismiss (hide a false positive) DCycle filter: active → delivered → all gRefresh the list EscClose the preview, then return to Mailbox
Key Action EnterRun search now TabChange lexical / hybrid / semantic mode EscStop editing query
Key Action j / kMove through results Enter / o / lOpen selected result in preview /Edit query TabSwitch to preview EscReturn to mailbox
Key Action j / kMove through messages in the previewed thread h / EscReturn to results TabSwitch back to results RToggle reader mode AOpen attachments LOpen links r / a / f / eReply / reply all / forward / archive
Key Action j / kMove rule selection Enter / oRefresh selected rule overview nNew rule EEdit rule eEnable / disable rule DDry-run selected rule HShow history Ctrl-sSave rule form #Delete rule
Key Action Enter / oToggle fullscreen for the selected pane dOpen selected section details rRefresh diagnostics bGenerate bug report cEdit config LOpen logs
Key Action j / kMove account selection nNew IMAP/SMTP account Enter / oEdit selected account tTest selected account dSet selected account as default cEdit config rRefresh account inventory
Context Keys Help j / k, Ctrl-d, Ctrl-u, o, EscCommand palette typing, j / k, Enter, Esc Label picker typing, j / k, Enter, Esc Attachments j / k, Enter / o, d, EscBulk confirm Enter / y confirm, Esc / n cancelSnooze (preset list) j / k move, Enter confirm, Esc closeSnooze (custom mode) typing, Enter parse + snooze, Backspace, Esc back to presets Reply queue j / k, Esc closeSnippets browser j / k, Esc closeSender profile j / k select other sender email, Enter / o open selected email, Esc closeScreener queue j / k navigate, a allow, d deny, f feed, p paper-trail, Esc closeWelcome / setup d demo, g Gmail, i IMAP, Enter open form, Esc dismissSaved-search form typing fields, Tab / Shift-Tab move, Ctrl-s save, Esc cancel Saved-search delete Enter / y confirm delete, Esc / n cancelCompose send-confirm s send, d save as draft, e re-edit, Esc cancelUnsubscribe confirm u unsubscribe + archive, U unsubscribe + trash, a archive only, A archive all from sender, Esc cancelAnalytics filter modal typing fields, Tab / Shift-Tab move, Enter apply, Esc cancel Error modal j / k, Ctrl-d / Ctrl-u scroll, q / x / Esc close
The web app uses its own global keymap, derived from the shared action
registry at apps/web/src/lib/actions/. Page-internal vim keys (j/k,
x, etc.) are handled per-page; the keys below are the global chords.
Key Action ⌘K / Ctrl-KOpen command palette :Open command palette (alt) /Open search palette ?Toggle help dialog cOpen compose launcher 1 … 9, 0Quick nav (Inbox, Search, Analytics, Rules, Screener, Subscriptions, Reply queue, Accounts, Diagnostics, Settings)
Key Action g iGo to Inbox g sGo to Starred g dGo to Drafts g tGo to Trash g aGo to All Mail (matches Gmail muscle memory) g nGo to Snoozed g lGo to Reply queue g uGo to Subscriptions g rGo to Rules g yOpen Analytics
Note: in earlier builds the web command palette labelled Analytics as
g a, colliding with the global keymap. As of the parity-closure work
the palette and keymap share one registry, g a is consistently
All Mail, and Analytics has moved to g y. On first visit to /m/archive
after the migration a one-time toast announces the move.
The web keymap is currently built into the SPA — there is no keys.toml
equivalent yet. The Settings → Keybindings page renders the full
registry-derived list, including which actions are palette-only.