Open-Source Wikis

/

fzf

/

Reference

/

Dependencies

junegunn/fzf

Dependencies

fzf has a deliberately small dependency graph — the binary is meant to install in one step and run anywhere. Module declarations live in go.mod.

Direct Go dependencies

Module Version (at v0.72.0) Purpose Where it's used
github.com/charlievieth/fastwalk v1.0.14 Parallel directory walker with sensible Windows behavior. src/reader.go (readFiles).
github.com/gdamore/tcell/v2 v2.9.0 Terminal cell-based renderer. src/tui/tcell.go (only with -tags tcell).
github.com/junegunn/go-shellwords pseudo-version Shell-style argument splitter. Maintainer's fork of mattn/go-shellwords. src/options.go (parsing FZF_DEFAULT_OPTS).
github.com/mattn/go-isatty v0.0.20 TTY detection. src/util/util.go (and OS-specific util).
github.com/rivo/uniseg v0.4.7 Unicode grapheme cluster segmentation and width. src/util/chars.go, src/terminal.go, src/tui/tui.go.
golang.org/x/sys v0.35.0 OS primitives (signals, terminal modes, syscalls). src/util/util_unix.go, src/util/util_windows.go, src/tui/light_*.go.
golang.org/x/term v0.34.0 Raw-mode terminal control. src/tui/light.go.

Indirect Go dependencies

Module Pulled in by
github.com/gdamore/encoding tcell/v2
github.com/lucasb-eyer/go-colorful tcell/v2
github.com/mattn/go-runewidth tcell/v2, uniseg
golang.org/x/text tcell/v2, uniseg

Build dependencies

These are not pulled in by the Go module graph but are required by make:

  • Go 1.23 — declared in go.mod, required by every Go-related target.
  • GoReleaser — used by make build and make release (.goreleaser.yml).
  • Ruby + Minitest + Rubocop — used by make itest and make lint (Gemfile, Gemfile.lock).
  • shfmt — used by make lint (shell/update.sh --check).
  • tmux — required for the integration test harness.
  • zsh, fish — required for the shell-integration tests.
  • stringer (golang.org/x/tools/cmd/stringer) — invoked by go generate.

Runtime dependencies

The binary itself runs unaided. The shell integrations and preview script have soft dependencies:

  • awk (or mawk) — used by the bash/zsh integration helpers.
  • bash — used by bin/fzf-tmux and bin/fzf-preview.sh.
  • tmux — required when running in a tmux split or --tmux popup.
  • man — used by fzf --man to render the embedded man page through man.
  • Optional preview tools used by bin/fzf-preview.sh: bat, chafa, ueberzug, kitty +kitten icat, unar, tree, etc. The script gracefully falls back if a tool is missing.

Why so few

A general-purpose CLI tool is most useful when it works in a fresh container, on a corporate jump box, on Windows, on a Raspberry Pi, on macOS, on FreeBSD, etc. Every additional dependency is one more thing that can fail to build or be at the wrong version. The matchers and the renderer (light.go) are explicitly hand-rolled for this reason; tcell is gated behind a build tag to keep the default binary small and fast.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Dependencies – fzf wiki | Factory