fzf --style Presets: default, minimal, and full Configuration Guide
fzf provides three built-in --style presets—default, minimal, and full[:BORDER_STYLE]—that control border visibility, info line placement, and cursor highlighting with a single flag.
The junegunn/fzf command-line fuzzy finder simplifies UI customization through its --style flag, allowing users to switch between minimal and full-featured interfaces without manually configuring individual border and display options. These presets are implemented in the Go source code and affect everything from border shapes to the position of the info line.
Available fzf --style Presets
fzf offers three distinct presets in src/options.go that reconfigure the terminal UI by resetting platform defaults and applying specific settings through the applyPreset function.
The default Preset
The default preset clears all border shapes and disables visual enhancements to provide a clean, basic interface. According to the source code at lines 76–89, this preset sets tui.BorderNone for the list, input, header, footer, and preview windows, effectively removing all borders. It also disables the cursor line (CursorLine = false) and uses the standard infoDefault info style, which places the info line at the top of the interface.
The minimal Preset
The minimal preset builds upon the default configuration but adds subtle line borders to specific areas while suppressing decorative elements. As implemented in lines 94–106, this preset applies tui.BorderLine to the footer and preview windows only, leaving other sections borderless. It forces the info line to be empty (while keeping InfoStyle = infoDefault), sets Theme.Gutter to an empty color attribute, and ensures the cursor line remains disabled.
The full Preset with Optional Border Styles
The full preset enables a complete UI with borders on all sections, inline-right info positioning, and cursor highlighting. Lines 108–132 define this preset to set InfoStyle = infoInlineRight, enable CursorLine = true, and activate gutters while leaving separators and scrollbars at their defaults.
You can optionally specify a border style by appending a colon and style name: full:rounded, full:sharp, full:bold, full:double, etc. When a border style is provided (parsed via parseBorder at lines 111–115), that shape applies to all borders including the list, input, header, footer, and preview windows. Without a specifier, the preset uses tui.DefaultBorderShape (rounded).
How --style Presets Work in the Source Code
The preset logic resides in src/options.go, where the applyPreset function orchestrates the UI transformation. This function first resets the theme to platform defaults, then conditionally applies preset-specific overrides based on the user-supplied value. The implementation handles three specific cases: default (lines 76–89), minimal (lines 94–106), and full with optional border parsing (lines 108–132). When using the full variant with a custom border, the code calls parseBorder to convert the string argument (e.g., "sharp", "double") into the corresponding tui.BorderShape constant.
Practical Examples
Use these commands to test each preset:
# Basic interface with no borders and top info line
fzf --style=default
# Thin line borders on footer and preview only, no info line
fzf --style=minimal
# Full UI with rounded borders (default) and inline-right info
fzf --style=full
# Full UI with sharp corners instead of rounded
fzf --style=full:sharp
# Full UI with double-line borders
fzf --style=full:double
Note that when using tmux integration, the --style=full:STYLE syntax also affects the tmux pop-up borders, as noted in src/tmux.go.
Summary
default: Removes all borders (tui.BorderNone), disables cursor line, places info at top.minimal: Addstui.BorderLineto footer and preview only, suppresses info line content and gutters.full[:STYLE]: Enables all borders, inline-right info, cursor line, and optional border shapes (rounded, sharp, bold, double) applied globally.
Frequently Asked Questions
What is the difference between the default and minimal presets in fzf?
The default preset removes all borders and keeps the info line visible at the top, while minimal adds thin line borders specifically to the footer and preview windows and forces the info line to be empty. Both disable the cursor line, but minimal also clears the gutter color attribute.
How do I use sharp or double borders with the full preset?
Append the border style after a colon: --style=full:sharp or --style=full:double. The parseBorder function in src/options.go (lines 111–115) converts these strings into border shapes that apply to all UI sections including the list, input, header, footer, and preview windows.
Do fzf style presets affect the info line position?
Yes, the presets configure different InfoStyle values. The default and minimal presets use infoDefault (top placement), while the full preset switches to infoInlineRight, displaying the info line to the right of the input prompt.
Where is the --style flag implemented in the fzf source code?
The implementation resides in src/options.go, specifically within the applyPreset function (lines 76–132). This function handles preset parsing, resets theme defaults, and applies specific configurations for default, minimal, and full variants including optional border style parsing.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →