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

  1. Use inline only with --header-border, --header-lines-border, or --footer-border
  2. For the outer/list/input/preview borders use rounded, sharp, double, bold, block, or none
  3. 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

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


AI-assisted analysis of junegunn/fzf@bd4efa277b (2026-08-15). Data as JSON: /api/errors/7312bb7c44b24f58. Report an issue: GitHub.