Modified Keys in Mux Panes
Nash 0.11.5 lets mux panes receive extended keyboard input, including native
Shift+Enter, rather than treating every program like a legacy shell. This
covers Unix and TLS domains, SSH domains using Nash multiplexing, and panes
created with [mux] enabled = true. It does not change the limitations of tmux
control-mode domains.
The release also adjusts tab selection and highlighting. Before testing the keyboard changes against an existing mux server, plan its restart: this release uses a new protocol.
Let the Program Choose Its Keyboard Mode
The server now reports each pane's keyboard encoding to the GUI. The GUI can then encode keys for the application actually running there. Kitty keyboard input includes Command/Super modifiers, requested key releases, lock-key state, alternate keys, and associated text.
Kitty keyboard support is off by default. Set enable_kitty_keyboard = true
in the Lua configuration used by both the GUI and the server. With the
bundled configuration, a minimal ~/.config/nash/custom.lua is:
return { enable_kitty_keyboard = true }If that file already returns configuration, add the field to it rather than replacing your other overrides. A remote server reads configuration on its own host; changing only the local GUI is not enough. The application must also request the protocol.
Mode changes take a network trip to reach the GUI. The server checks encoded keys against its current mode and re-encodes them when necessary, so an exiting Kitty application does not leave its shell receiving stale Kitty key bytes. Predicted local echo is not used for these GUI-encoded keys.
Keep Shift+Enter Native Where It Is Supported
The bundled ShiftEnterOrNewline action now uses the reported mode in mux
panes, as it does in direct PTY panes. If the program can distinguish
Shift+Enter from Enter, the original key passes through. Otherwise the action
sends ESC CR, the legacy multiline input that zsh's default binding reads as
an inserted newline.
An old unconditional Shift+Enter override can still replace that behavior.
Review it before diagnosing a program's keyboard support. The action remains
direct-key-binding only: it is not for the command palette, Multiple, or
Lua window:perform_action calls.
Tmux control-mode panes still receive ESC CR because they do not expose their
keyboard mode. Running tmux inside a direct PTY is different: tmux can negotiate
extended keys itself, so a legacy shell inside it is not guaranteed a multiline
newline. See Keyboard.
Make Tab Behavior More Predictable
Under [tab.highlight], pill_alignment accepts left, center, or right.
For top_line, it positions the inactive custom-color pill and anchors the
stroke's growth when selected. It does not affect tinted or none.
Color inheritance is now limited to tabs opened immediately after the current
tab, including tasks targeting new_tab_after_current. Tabs opened at the
end, including the new-tab button and new_tab tasks, do not inherit it.
ActivateTab also clamps out-of-range indices: with three tabs, SUPER+5 selects
the third. Excessively negative indices select the first. Positive past-the-end
nash cli activate-tab --tab-index values still report an error. See
Tabs.
Restart Only When Work Can Stop
Nash 0.11.5 uses mux protocol 50. An older server needs replacement;
installing a new binary does not upgrade the running process. Inspect it with
nash mux status. On Unix, nash mux restart replaces it; on Windows, stop
nash-mux-server manually before starting the replacement.
Restart destroys the server's panes and their running processes. Save work first. This is not a detach and reconnect. The mux commands reference explains the upgrade boundary.