junegunn/fzf · error
inline border is only supported for --header-border, --heade
Error message
inline border is only supported for --header-border, --header-lines-border, and --footer-border
What it means
The 'inline' border style draws a border segment inside the header/footer area and is only meaningful there. Applying BorderInline to the outer (--border), list (--list-border), input (--input-border), or preview (--preview-border) border is rejected at options.go:3665.
Source
Thrown at src/options.go:3665
return errors.New("adaptive height is not compatible with top/bottom percent margin")
}
}
for _, s := range []sizeSpec{opts.Padding[0], opts.Padding[2]} {
if s.percent {
return errors.New("adaptive height is not compatible with top/bottom percent padding")
}
}
}
if opts.Theme.Nth.IsColorDefined() {
return errors.New("only ANSI attributes are allowed for 'nth' (regular, bold, underline, reverse, dim, italic, strikethrough)")
}
if opts.BorderShape == tui.BorderInline ||
opts.ListBorderShape == tui.BorderInline ||
opts.InputBorderShape == tui.BorderInline ||
opts.Preview.border == tui.BorderInline {
return errors.New("inline border is only supported for --header-border, --header-lines-border, and --footer-border")
}
if opts.HeaderBorderShape == tui.BorderInline &&
opts.HeaderLinesShape != tui.BorderInline &&
opts.HeaderLinesShape != tui.BorderUndefined &&
opts.HeaderLinesShape != tui.BorderNone {
return errors.New("--header-border=inline requires --header-lines-border to be inline or unset")
}
return nil
}
func noSeparatorLine(style infoStyle, separator bool) bool {
switch style {
case infoInline:
return true
case infoHidden, infoInlineRight:
return !separator
}View on GitHub (pinned to bd4efa277b)
Solutions
- Use inline only with --header-border, --header-lines-border, or --footer-border
- For the outer/list/input/preview borders use rounded, sharp, double, bold, block, or none
- Check fzf --help for which shapes each border option accepts
Example fix
# before
fzf --preview-border=inline --preview 'cat {}'
# after
fzf --preview-border=rounded --preview 'cat {}' Defensive patterns
Strategy: validation
Validate before calling
// Shell: inline only for header/footer borders case "$border" in inline) border='header' ;; esac # or reject exec fzf --border="$border"
Type guard
func inlineAllowed(opt string) bool {
switch opt {
case "--header-border", "--header-lines-border", "--footer-border":
return true
}
return false
} Prevention
- Remember inline is a header/footer-only shape
- Use rounded/sharp/double/bold/block/none for outer, list, input, and preview borders
- Validate border values per-option in config loaders
When it happens
Trigger: Passing --border=inline, --list-border=inline, --input-border=inline, or --preview-border=inline. Any of those four shapes equal to tui.BorderInline triggers the error.
Common situations: New border-shape values being applied globally via a shared variable in scripts; users experimenting with inline after seeing it in header examples; configs generated for one fzf version used on another where inline was added.
Related errors
- list border cannot be 'line'
- --header-border=inline requires --header-lines-border to be
- unknown action: ${spec}
- invalid layout (expected: default / reverse / reverse-list)
- invalid info style (expected: default|right|hidden|inline[-r
AI-assisted analysis of junegunn/fzf@bd4efa277b (2026-08-15).
Data as JSON: /api/errors/7312bb7c44b24f58.
Report an issue: GitHub.