Fish Shell 4.3 Released With Scripting and Terminal Improvements

Fish Shell 4.3 introduces smarter theming, improved completions, better terminal integration, and many changes across scripting and interactive features.

Fish, a popular user-friendly command-line shell, has announced version 4.3, a new release that builds on the 4.0 series.

One of the most notable changes affects how Fish handles configuration defaults. Universal variables are no longer set automatically. Instead, commonly used variables such as fish_color_*, fish_pager_color_*, and fish_key_bindings are now defined in the global scope.

On first startup after upgrading, Fish performs a one-time migration, freezing the current theme and key bindings into files under ~/.config/fish/conf.d/. Upstream recommends removing those generated files and managing themes directly in config.fish to keep configurations clean and predictable. Users can still opt into universal variables if needed, though this comes with limitations for dynamic theme switching.

On the scripting capabilities side, a new status language command allows users to view and modify the language used for fish messages without changing environment variables.

Completion handling in non-interactive sessions has been fixed so that commandline --cursor now behaves correctly, and tracing has been expanded so fish_trace=all includes key bindings, event handlers, and prompt functions.

Interactive use sees several refinements. The initial prompt now renders properly when input begins immediately after startup, and completion accuracy has improved for paths containing = or :. Case-insensitive prefix matching is now supported for completions, autosuggestions display soft-wrapped content, and command completion behavior on Cygwin and MSYS better aligns executable names with their corresponding metadata.

Key binding behavior has also been improved. The ctrl-w shortcut now removes escaped spaces when deleting path components, and new path-aware editing functions have been introduced to navigate and modify filesystem paths more precisely from the command line.

Regarding terminal support, Fish themes can now react dynamically to terminal color schemes by defining separate light and dark sections. Several default themes have already been updated to support this behavior.

Prompt integration has improved through more consistent OSC signaling, including accurate reporting of the working directory and clearer prompt boundaries for terminals that support shell integration features. Focus reporting is now enabled by default, and a new feature flag allows users to disable terminal-specific workarounds when they are not needed.

Finally, the release also addresses multiple regressions from earlier versions, including crashes related to color variables, Unicode autosuggestions, emoji width handling on macOS, multiline input edge cases, and completion issues on non-glibc systems.

For more information, see the changelog.

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Leave a Reply

Your email address will not be published. Required fields are marked *