Skip to content

Key Bindings

Honeymux’s bindable actions are listed below. Bindings live at ~/.config/honeymux/keybindings.json in a { default, overrides } structure, and can also be edited from the Main Menu’s Functions, Agents, and Navigation tabs. Only mainMenu is bound by default; every other action starts unbound so the user can choose mappings that do not collide with their terminal emulator or the applications running inside it.

ActionDescription
activateMenu
Open the pane border menu on the active pane.
Defaultunbound
CategoryFunction
agentLatch
Toggle review-latched mode on the focused Mux-o-Tron agent; keyboard input routes to that agent’s pane while the latch is held.
Defaultunbound
CategoryAgent action
agentPermApprove
Send an approve response to a waiting agent’s pending permission request.
Defaultunbound
CategoryAgent action
agentPermDeny
Send a deny response to a waiting agent’s pending permission request.
Defaultunbound
CategoryAgent action
agentPermDismiss
Dismiss a waiting agent’s permission request without responding; the agent stays in the unanswered queue.
Defaultunbound
CategoryAgent action
agentPermGoto
Switch focus to the pane where the waiting agent is running.
Defaultunbound
CategoryAgent action
agentReviewGoto
From the agent review workflow, jump focus to the currently selected agent’s pane.
Defaultg
CategoryAgent review
agentReviewNext
Step forward through pending agents while the review workflow is active.
Defaultdown
CategoryAgent review
agentReviewPrev
Step back through pending agents while the review workflow is active.
Defaultup
CategoryAgent review
agents
Open the Agents dialog.
Defaultunbound
CategoryFunction
bufferZoom
Capture the active pane’s scrollback and display it full-screen (Buffer Zoom).
Defaultunbound
CategoryFunction
conversations
Open the Conversations cross-agent history search.
Defaultunbound
CategoryFunction
favoriteProfile
Apply the favorite layout profile directly, skipping the dropdown. Does nothing if no profile is starred.
Defaultunbound
CategoryFunction
Open the Main Menu. The only action bound by default. Pressing the binding a second time from inside the menu forwards the key to the active pane, so an app inside that also uses ctrl+g still receives it.
Defaultctrl+g
CategoryFunction
mobile
Toggle the mobile-optimized UI layout.
Defaultunbound
CategoryFunction
newPaneTab
Add a new pane tab to the active pane.
Defaultunbound
CategoryFunction
nextPaneTab
Cycle to the next pane (or pane tab, when pane tabs are enabled) in the current window.
Defaultunbound
CategoryNavigation
nextSession
Switch to the next tmux session in alphabetical order.
Defaultunbound
CategoryNavigation
nextWindow
Switch to the next tmux window in the current session.
Defaultunbound
CategoryNavigation
notifications
Open the Notifications review frame.
Defaultunbound
CategoryFunction
options
Open the Options dialog.
Defaultunbound
CategoryFunction
prevPaneTab
Cycle to the previous pane (or pane tab, when pane tabs are enabled) in the current window.
Defaultunbound
CategoryNavigation
prevSession
Switch to the previous tmux session in alphabetical order.
Defaultunbound
CategoryNavigation
prevWindow
Switch to the previous tmux window in the current session.
Defaultunbound
CategoryNavigation
profiles
Open the Profiles dropdown.
Defaultunbound
CategoryFunction
quickTerminal
Toggle the Quick Terminal overlay.
Defaultunbound
CategoryFunction
redraw
Force a full redraw of the Honeymux UI. Useful after an outer-terminal event corrupts the display.
Defaultunbound
CategoryFunction
review
Enter the agent review workflow from the Mux-o-Tron. Within the workflow, the agentReview* actions step through pending agents.
Defaultunbound
CategoryFunction
screenshot
Open the Screenshot capture dialog for the active pane.
Defaultunbound
CategoryFunction
sessions
Open the Sessions dropdown.
Defaultunbound
CategoryFunction
Toggle the Sidebar panel.
Defaultunbound
CategoryFunction
sidebarFocus
Move keyboard focus into the sidebar for arrow-key navigation.
Defaultunbound
CategoryNavigation
toolbar
Toggle the Toolbar.
Defaultunbound
CategoryFunction
toolbarFocus
Move keyboard focus into the toolbar for arrow-key navigation.
Defaultunbound
CategoryNavigation
zoomAgentsView
Expand the Agents tree to full terminal width. Whether the binding is tap-to-toggle or must be held down is controlled by zoomAgentsViewStickyKey; hold-mode requires a terminal that supports the kitty keyboard protocol.
Defaultunbound
CategoryZoom modifier
zoomServerView
Expand the tmux server tree view in the sidebar to full terminal width. Sticky vs hold behavior mirrors zoomAgentsView and is controlled by zoomServerViewStickyKey.
Defaultunbound
CategoryZoom modifier

The full list of recognized key names:

CategoryKeys
Editing and navigationhomeendpage_uppage_downinsertdeletetabbackspaceescapeenterspaceupdownleftright
Function rowf1 through f35
Other functional keyscaps_lockscroll_locknum_lockprint_screenpausemenu
Numeric keypadkp_0kp_1kp_2kp_3kp_4kp_5kp_6kp_7kp_8kp_9kp_decimalkp_dividekp_multiplykp_subtractkp_addkp_equalkp_separatorkp_enterkp_leftkp_rightkp_upkp_downkp_page_upkp_page_downkp_homekp_endkp_insertkp_deletekp_begin
Media keysmedia_playmedia_pausemedia_play_pausemedia_reversemedia_stopmedia_fast_forwardmedia_rewindmedia_track_nextmedia_track_previousmedia_recordlower_volumeraise_volumemute_volume
Modifier-only keysleft_shiftright_shiftleft_ctrlright_ctrlleft_altright_altleft_superright_superleft_hyperright_hyperleft_metaright_metaiso_level3_shiftiso_level5_shift

A binding is a single string: zero or more modifier prefixes joined with +, ending in a key name. Modifiers are ctrl, alt, and shift, written in that order. Examples: ctrl+g, alt+page_up, ctrl+shift+f5, or just home.

The simplest way to set a binding is from the Main Menu — focus an action, press return to enter capture mode, and press the key combo. Honeymux normalizes whatever the terminal sent into the canonical form shown above and saves it.

Plain printable keys (a, 1, /, etc.) must include at least one modifier — binding a bare letter would shadow normal terminal input, so the capture UI rejects it. Named keys like home or f1 are accepted standalone, since they have no in-band representation that could collide with what the application beneath sees.

Most named keys (home, end, arrows, page up/down, F1–F12, insert, delete) flow through standard terminal sequences and bind on every emulator Honeymux runs in. A handful of capabilities require the Kitty keyboard protocol:

  • Modifier-only key bindings (e.g., assigning right_alt to agentLatch)
  • Hold-to-zoom mode for zoomAgentsView and zoomServerView
  • F13 and above
  • The keypad, media, and “other functional” keys (caps_lock, print_screen, etc.) — without the protocol, most terminals send keypad keys as the same sequence as the main keyboard, so kp_enter is indistinguishable from enter
  • Reliable disambiguation between tab and ctrl+i, enter and ctrl+m, escape and ctrl+[

Terminals known to support the protocol include Kitty, Ghostty, WezTerm, foot, Contour, and recent iTerm2 (with the option enabled). On terminals without it, the rest of Honeymux still works — those specific features just aren’t available.

Bare f3 binds on any terminal. Modified F3 (ctrl+f3, shift+f3, etc.) only works when the terminal has the Kitty keyboard protocol’s “report all keys” flag active.1 F1, F2, and F4 are unambiguous and bind on any terminal, modified or not.

A few legacy combinations are the same on the wire on most terminals and get canonicalized to a single name:

  • ctrl+@, ctrl+space, ctrl+2, and ctrl+` all canonicalize to ctrl+@ on a US layout.
  • Unless the Kitty keyboard protocol is active, tab and ctrl+i, enter and ctrl+m, escape and ctrl+[ are the same single byte.

Binding ctrl+@ therefore catches all four of the first group; binding tab (without Kitty protocol) also catches ctrl+i.

On macOS, the bare F-row keys default to hardware and OS-level shortcuts — F1/F2 for display brightness, F3 for Mission Control, F4 for Spotlight or Launchpad, F11 for Show Desktop, and so on — and the system intercepts them before the terminal sees them. Holding fn while pressing an F-key always sends the actual F-key through to honeymux without changing any settings, so fn+f3 works out of the box.

To use the bare F-keys (no fn), visit System Settings → Keyboard → Keyboard Shortcuts and uncheck the entries that own the keys you want.

The fn and cmd keys are not exposed to terminal applications. fn is an OS-level remapper, not a terminal modifier; cmd is reserved by terminal emulators for their own menu shortcuts.

  1. The traditional encoding for modified F1–F4 (ESC [ 1 ; <mod> P/Q/R/S) is structurally identical to the terminal’s cursor-position-report response (ESC [ <row> ; <col> R), which terminals send in reply to capability probes Honeymux emits during startup. Honeymux refuses to parse the R form so probe responses are never misclassified as a key event. The other three letters (P, Q, S for F1, F2, F4) are unambiguous and parse normally.

Screen captures powered by Honeyshots

Copyright © 2026 Aaron Campbell · Apache 2.0