0.73.0 #
(May 2026)
Quick summary #
This release adds Nushell integration, a new preview window position, and timer-driven bindings backed by an idle-time environment variable.
| Type | Class | Name | Description |
|---|---|---|---|
| New | Shell | Nushell | fzf --nushell and installer support |
| New | Option | --preview-window=next | Preview adjacent to the input section |
| New | Event | every(N) | Timer-driven event for --bind |
| New | Env var | $FZF_IDLE_TIME | Seconds since the last user activity |
| New | Env var | $FZF_IDLE_TIME_MS | Milliseconds since the last user activity |
| New | Env var | $FZF_CURRENT_ITEM | Current item, for shells where {} is awkward |
1. Nushell integration #
Nushell joins the list of shells with built-in fzf integration
(#4630)
(@sim590). The install script sets it up for
you, dropping the generated file into Nushell’s autoload directory. To set it
up manually:
mkdir ($nu.default-config-dir | path join "autoload")
fzf --nushell | save -f ($nu.default-config-dir | path join "autoload" "_fzf_integration.nu")
Nushell does not support piping into source, so the script has to live in
the autoload directory rather than being sourced inline like the other shells.
Info
This is the initial Nushell support; please report any rough edges.
2. --preview-window=next
#
--preview-window learned a new next position that places the preview
adjacent to the input section, on the list side:
- Above the input in the default layout
- Below it in
--layout=reverse
fzf --preview 'cat {}' --preview-window next
This complements existing positions (up, down, left, right) when you
want the preview to track the input rather than the list area.
3. Timer-driven bindings with every(N)
#
A new every(N) event fires every N seconds, where N is a whole number.
Bind it with --bind to run actions on a regular cadence.
Two new environment variables, $FZF_IDLE_TIME (whole seconds) and
$FZF_IDLE_TIME_MS (milliseconds), hold the elapsed time since the last user
activity. Combined with every(N), they enable idle-based behavior such as
auto-refresh, auto-accept, or auto-quit
(#1211).
Live process list #
--track --id-nth 2 keeps the cursor on the same PID across reloads.
fzf --header-lines 1 --track --id-nth 2 --bind 'start,every(2):reload-sync:ps -ef'
Auto-accept after inactivity #
Auto-accept after 10 seconds of inactivity, with a countdown in the footer after 5s:
fzf --bind 'every(1):bg-transform:
if [[ $FZF_IDLE_TIME -lt 5 ]]; then echo change-footer:
elif [[ $FZF_IDLE_TIME -lt 10 ]]; then echo "change-footer:auto-accept in $((10 - FZF_IDLE_TIME))s"
else echo accept
fi'
4. $FZF_CURRENT_ITEM
#
$FZF_CURRENT_ITEM exposes the current item to child processes, for shells
where quoting {} in --preview or execute is awkward
(#4802).
Bug fixes #
- Scoring: non-word characters at the start of input or after a delimiter now receive the same boundary bonus as word characters (#4795)
change-preview-windowno longer resetswrap/wrap-wordstate set viatoggle-preview-wrap/toggle-preview-wrap-word(#4791)- Stripped UTF-8-encoded C1 control characters from rendered items to prevent terminal control-sequence injection
- Fixed integer-overflow panic in
FuzzyMatchV2on 32-bit builds (Michal Majchrowicz, Marcin Wyczechowski, AFINE Team) - Fixed
bg-transformreload/excludepayloads being dropped - Fixed rendering glitch with preview window on the left combined with footer