Open-Source Wikis

/

fzf

/

Systems

junegunn/fzf

Systems

The Go core is organized as a single fzf package (src/) with three sub-packages: src/algo (matching algorithms), src/tui (renderer), and src/util (shared primitives). The package is small but each major file is large and self-contained.

This section documents the major systems that make up the core. Each page focuses on a different layer of fzf's runtime.

Pages

  • Core coordinator — the Run event loop in src/core.go that wires Reader, Matcher, and Terminal together.
  • Matching — the algo package, the pattern compiler in src/pattern.go, and the matcher in src/matcher.go.
  • Reader and chunk list — input ingestion (src/reader.go), the chunked storage (src/chunklist.go), and the cache (src/cache.go).
  • Terminal UI — the renderer interfaces and the layout machine in src/terminal.go.
  • Options and action language — option parsing, key/mouse bindings, the action enum, and the placeholder language.
  • HTTP server — the --listen mode in src/server.go.
  • Process modes — tmux popup, Zellij popup, winpty, and the proxy machinery in src/proxy.go / src/tmux.go / src/zellij.go / src/winpty.go.

How the systems compose

graph TD
    OPT[Options<br/>src/options.go] --> CORE[Core coordinator<br/>src/core.go]
    CORE --> READER[Reader + ChunkList<br/>src/reader.go<br/>src/chunklist.go]
    CORE --> MATCHER[Matcher + algo<br/>src/matcher.go<br/>src/algo/algo.go]
    CORE --> TERM[Terminal<br/>src/terminal.go]
    TERM --> RENDER[Renderer<br/>src/tui/tui.go]
    TERM --> SERVER[HTTP server<br/>src/server.go]
    CORE --> PROXY[Process modes<br/>src/proxy.go<br/>src/tmux.go<br/>src/zellij.go<br/>src/winpty.go]

Each system page describes the entry points, the data structures it owns, and where to make changes when extending it.

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

Systems – fzf wiki | Factory