Quick Pane Navigation
Hold Ctrl+Alt+Super, then type a pane number to focus it. On macOS, that is Control+Option+Command. Number badges appear while you hold the chord, so there is no need to click a pane or step through its neighbors.
Number navigation needs Nash 0.9.2 or newer. This page describes 0.9.4; the original 0.9.2 default was Alt+Shift. An upgrade keeps a chord you already saved rather than replacing it with the new default.
Pick a pane
- Hold the configured modifiers.
- Read the numbers over the unfolded panes of the active tab.
- Type the number of the pane you want.
- Release the modifiers when you are done.
Numbers start at 1, ordered top to bottom, then left to right for panes with the same top edge. They follow the layout, not the order panes were created.
Keep holding the chord and type another number to change your selection. The numbers stay the same during the hold. With multiple unfolded panes, the active pane's badge is hidden, but its number still works. Its badge reappears when focus moves elsewhere, including when you click another pane.
More than nine panes
There is no nine-pane limit and no timeout:
- An unambiguous number selects immediately.
- If a number also begins another label, keep typing or press Enter to confirm the exact number.
- Backspace edits the pending number.
- An invalid number, including a leading zero, is discarded without sending it to the terminal.
- Holding a digit does not repeat it. Press it twice to enter
11.
For twelve panes, 2 selects pane 2; 1, 0 selects pane 10; and 1,
Enter selects pane 1. Matching badges stay bright while other badges dim.
Folded and maximized panes
In 0.9.4, folded strips receive no number. Unfolded panes count from 1 without gaps, so number navigation never selects or unfolds a strip. Click a strip to select it and press Enter or double-click to unfold it. See Pane Folding.
With just one unfolded pane, its 1 badge stays visible as feedback that the
chord is active. A zoomed tab also shows only 1; number navigation never
unzooms it.
Configure the chord
In ~/.config/nash/nash.toml:
[pane] number_navigation = true number_navigation_modifiers = "CTRL|ALT|SUPER"
If the file already has a [pane] table, edit the keys there instead of adding
another table. Nash applies changes on configuration reload.
Use any non-empty combination of CTRL, ALT, SHIFT, and SUPER. For
example, "SUPER|SHIFT" uses Command+Shift on macOS, and "CTRL|ALT" uses
Control+Alt. CMD and OPT are aliases for SUPER and ALT. Side-specific
modifiers, LEADER, and NONE are not supported.
Set number_navigation = false to turn the feature off. Configuration sync
preserves both your opt-out and your custom chord. A custom.lua override uses
enable_pane_number_navigation and pane_number_navigation_modifiers instead.
Label colors
The bundled configuration uses the theme accent for the numbers and a
transparent background. To change them, edit these keys in [pane]:
pane_select_fg_color = "#86b5ff" pane_select_bg_color = "rgba(0,0,0,50%)"
Empty strings restore the accent and transparent defaults. These colors also apply to the pane picker used to activate, swap, or move panes.
Label size
Since Nash 0.9.6, pane_select_font_size sizes both the pane-selection
labels and quick-navigation numbers. Edit it in your existing [pane] table:
pane_select_font_size = 36
The default is 36 points. Navigation numbers still shrink to fit small panes.
Cancel and avoid shortcut conflicts
Release any chord modifier or press Escape to dismiss navigation. Another key cancels it and follows its usual binding; adding an extra modifier does the same. The configured modifiers must match exactly.
While navigation is active, digits, Enter, Backspace, and Escape belong to Nash, not to the program in the pane. This remains true after selecting a pane until you release the chord. Choose a different chord or disable the feature if your shell or editor needs those keys with those modifiers. Alt alone, for example, would reserve Alt+Enter and Alt+Backspace.
Focus loss, changing tabs, folding or zooming, adding or removing panes, configuration reload, and opening a dialog cancel the hold. Release and hold the chord again to resume. Resizing without changing pane order updates the badges and clears any pending number.
Dialogs, terminal overlays, and input-method composition keep their normal input. Finished Chinese, Japanese, or other composed text does not accidentally select a pane or reach the terminal behind a dialog.
Operating-system shortcuts can intercept a chord before Nash sees it. Pick another chord if that happens. On X11, number navigation is disabled when the server cannot provide reliable held-key repeat reporting; normal input and shortcuts still work.
Move and rotate panes
The command palette and Window → Move Pane menu include commands to rearrange existing panes without restarting their programs:
- Rotate Panes Clockwise and Rotate Panes Counter-Clockwise cycle pane positions within the current tab.
- Swap Pane shows labels to choose another pane to swap with. Focus follows the active pane; Swap Pane (Keep Focus) keeps focus in the original position.
- Move Pane to New Tab and Move Pane to New Window detach the active pane into its own tab or window.
These commands have no bundled shortcuts. Add keys to their command IDs in
commands.toml using the
configuration guide.
A moved folded pane arrives unfolded; swapping or rotating preserves its fold.
Pane highlight transitions
Nash 0.10.0 animates the permanent active-pane highlight when you switch panes within a tab. Focus and keyboard input move immediately; only the visual indicator animates.
Choose a transition under [pane] in nash.toml:
| Value | Effect |
|---|---|
morph | Move and resize one highlight toward the destination. The bundled preset. |
fade | Crossfade the old and new highlights. The built-in Lua/Rust default. |
wake | Mark the destination immediately, with a distorted trailing copy catching up. |
none | Move the highlight instantly, without animation. |
[pane] active_pane_highlight_transition = 'morph' active_pane_highlight_morph_duration = '240ms' active_pane_highlight_fade_duration = '120ms'
Edit your existing [pane] table rather than adding another. Morph and fade
have independent durations; each accepts milliseconds as a number or a string
with ms or s units. Set the selected transition's duration to 0 or
'0ms' to disable its animation, or choose none.
Morph uses cubic ease-out and preserves the highlight's shape: a box remains an outline, bars stay bars, and corner markers keep their shapes. Switching again during an animation retargets from its current geometry; fade continues from the current opacities instead of restarting.
Configure the wake
Use a nested table, not an inline table:
[pane] active_pane_highlight_transition = 'wake' [pane.active_pane_highlight_wake] fast_ms = 100 slow_ms = 340 opacity = 0.3
These are the bundled values. Leading corners catch up faster than trailing
corners. Both timings must be positive numeric milliseconds, with slow_ms
at least fast_ms; they control convergence rather than a fixed total
animation duration. Opacity ranges from 0 to 1. The Lua/Rust wake defaults
are 100, 240, and 0.45, respectively.
The wake preserves the selected highlight shape and retargets from its current corners during rapid navigation. A crossing or otherwise nonconvex outline settles immediately rather than continuing the distortion.
Motion and other pane cues
Transitions are separate from pane_switch_highlight_animation and pane
flashes; disabling one does not disable the others. Morph and wake can pass
over terminal text while moving, without changing the permanent indicator's
reserved space.
Tab or layout changes, configuration reload, and window focus changes settle
moving effects immediately. Morph and wake are suppressed while overlays or
modals are open, with use_box_model_render = true, or when the highlight is
invisible. Unfocused windows use a static destination highlight rather than a
background animation.
Pane flashes
Since Nash 0.9.6, a brief cloud glow points out where to look:
- When switching tabs or returning to Nash, it marks the visible pane whose agent turn ended most recently. If none has a completion timestamp, it can mark the active pane instead.
- When moving between panes in the same tab, a quieter glow marks the destination pane.
Both flashes are enabled in the bundled configuration and added on upgrade.
Each has its own settings in nash.toml; edit existing tables rather than
adding duplicates. The bundled preset is:
[pane_flash.on_return] last_agent_pane = true active_pane = true effect = "cloud" duration_ms = 800 color = "" intensity = 0.4 size = '40pt' [pane_flash.on_pane_switch] enabled = true effect = "cloud" duration_ms = 400 color = "" intensity = 0.2 size = '20pt'
- Disable return flashes by setting both
last_agent_paneandactive_panetofalseinon_return. - Disable pane-switch flashes with
enabled = falseinon_pane_switch. duration_msis numeric milliseconds;0draws no flash.color = ""uses the theme accent; set a color to override it.intensityis edge opacity from0to1.sizesets the glow's depth usingpx,pt,cell, or a percentage of the pane's shorter side. It never extends beyond the pane's middle.
cloud is the supported effect: a soft glow from every edge without brighter
corners. It draws over terminal text but under agent badges and does not delay
input. A new flash replaces the one on screen.
The return flash uses the badge's newest end timestamp, even if badge rendering is disabled. It can repeat until typing clears the outcome. Only visible panes participate; folded panes flash their strips, and panes hidden by maximization do not flash. A tab change uses the return flash, not the pane-switch flash.
Flashes are independent of permanent highlight transitions and
pane_switch_highlight_animation. To keep only the cloud cue when switching
panes, set pane_switch_highlight_animation = "none" under [pane]; configure
permanent transitions separately above.