Separate floating pane border label from pane title

--border-label of a tmux floating pane was stored in the pane title and
read back by pane-border-format as '#{pane_title}', so any program in the
pane could replace the border text by setting the title. On Zellij the
name was only set when the pane was created. Either way the built-in
label actions could not touch it, as fzf draws no border of its own
there.

- tmux: hold the label in pane-scoped @fzf-border-label. Set the option
  even without a label, so a later change-border-label has somewhere to
  write. Drop select-pane -T; the pane title is left to the user
- Zellij: run 'zellij action rename-pane' on label change. 'zellij run'
  has no option to set the environment of the new pane, so the command
  exports the target itself
- change-border-label and transform-border-label now update the native
  border, through the setter nativeLabelSetter picks by multiplexer
- The pane is named in a __FZF_INTERNAL_ variable that runProxy withholds
  from the environment replay, so the same name in the outer environment
  cannot redirect the update to another pane
This commit is contained in:
Junegunn Choi
2026-07-29 20:59:52 +09:00
parent b5f2ba4fd4
commit 50e6c026ec
9 changed files with 279 additions and 57 deletions
+3
View File
@@ -3,6 +3,9 @@ CHANGELOG
0.74.2
------
- `change-border-label` and `transform-border-label` now update the label on the native border of a tmux or Zellij floating pane
- On tmux, the label no longer goes through the pane title, so a program running in the pane cannot replace it by setting the title
- Fixed a Kitty graphics sequence from a preview command being taken by tmux as a request to set the pane title; it is now passed through to the terminal
- Performance optimizations for short queries
- The most critical case: fzf narrows results as you type, so short queries scan the largest candidate sets and the first keystroke scans the whole input.
- Single-character queries are up to 2.4x faster