Files
fish-config/docs/manual/06-dependency-catalog.md
T
rootiest c17f6663db feat(deps): add Optional/Terminal Emulator tiers, fix docker prompt hang and ov install path
Reworks fish-deps' dependency classification from three tiers to five:
Required, Recommended, Optional, Terminal Emulators, and Integrations.

- Add an Optional tier for single-purpose wrapper conveniences that only
  matter if you already use that specific tool (btop, dust, duf,
  prettyping, go, lazygit, lazydocker, docker, yt-dlp, screen). Skipped by
  `fish-deps install`/`sync` by default.
- Split kitty/wezterm into their own Terminal Emulators tier, since only
  the one matching $TERM is ever relevant to a given user.
- Add --optional, --terminals, and --all flags to `install`/`sync` to
  opt back into the skipped tiers, with a summary of how many were
  skipped and which flag restores them.
- Fix `_fish_deps_status` marking missing Integrations as critical (red)
  the same as Required — only Required is red now; Recommended stays
  yellow, everything else renders as a neutral dim note.

Also fixes two bugs surfaced during dependency testing on a fresh
install:

- `fish_right_prompt` called `docker context show` on every prompt with
  no `type -q docker` guard, unlike every other optional integration in
  this config — on a system without docker this printed a visible
  "Unknown command: docker" block on every single prompt render. Added
  the missing guard, and hardened the `ld` wrapper with explicit
  docker/lazydocker presence checks.
- `ov`'s catalog entry offered `cargo install ov` as its preferred
  install method, but crates.io's `ov` is an unrelated crate, not the
  noborus/ov pager — cargo would silently install the wrong package.
  Removed the cargo path; `ov` now prefers `go install
  github.com/noborus/ov@latest` (ahead of the system PM) when go is
  available, since not all distros package `ov` in their base repos,
  and falls back to the system PM otherwise.
2026-08-14 16:42:37 -04:00

5.2 KiB

title, manTitle, sidebar, helpKeywords
title manTitle sidebar helpKeywords
Dependency Catalog 6. DEPENDENCY CATALOG
order
10
catalog
deps-catalog

fish-deps manages these tools. Run fish-deps to check status, fish-deps install to install missing Required/Recommended ones, or add --optional, --terminals, or --all to also include the Optional and/or Terminal Emulators tiers.

Required

Tool Description
fish Fish shell >= 4.0
fzf Fuzzy finder
Tool Description
cargo Rust toolchain (via rustup); used by fish-deps to install Rust-based tools and to build fish from source. All paths are gated on type -q cargo and degrade gracefully.
starship Cross-shell prompt; loaded via type -q starship guard. Without it the Catppuccin nim-style fallback prompt activates.
uv Python package and project manager (Astral); used by the fish-from-source build path in fish-deps. All consumers degrade gracefully without it.
direnv Per-directory environment loading; integration is fully guarded with type -q direnv. Without it the direnv hook is simply not loaded and auto-venv activates normally.
paru AUR helper (Arch only; preferred); guarded throughout — non-Arch systems silently skip AUR-specific paths.
yay AUR helper (Arch only; fallback to paru); same guards apply.
eza Modern ls replacement
zoxide Smart cd with frecency
lsd ls replacement (fallback to eza)
bat Syntax-highlighted cat
ov Modern pager (replaces less); also backs the logs viewer. Not a Rust crate, despite the name collision with an unrelated ov crate on crates.io. Prefers go install github.com/noborus/ov@latest when go is available (always gets the latest release, and covers distros like Debian/Ubuntu that don't package ov in their base repos); falls back to the system PM (AUR on Arch) otherwise.
ripgrep Fast line search
trash Safe delete (trash-cli); backs the rm and scrub wrappers.
python3 Standalone interpreter — used by the paru/yay log cleaner. Note: uv does not provide python3 on PATH, and Arch's base does not include it, so it is listed separately. All consumers degrade gracefully without it.

Optional

Single-purpose tools that back one wrapper function (or less) and only matter if you already use that specific tool. Skipped by fish-deps install/sync unless you pass --optional.

Tool Description
btop Modern resource monitor; backs the top wrapper (falls back to system top).
dust Disk usage tree (Rust); one of two backends for the du wrapper (falls back to system du).
duf Disk usage/free overview; the other backend for the du wrapper (falls back to system du).
prettyping Colorized ping wrapper; backs the ping wrapper (falls back to system ping).
go Go toolchain; only used to install ov via go install (see below), which gets the latest release and doesn't depend on your distro packaging ov. Package name varies by distro (go on Arch/Homebrew, golang/golang-go on Debian/Fedora) — install manually if the listed package name doesn't resolve on your system.
lazygit Terminal git UI; only referenced by the lg abbreviation.
lazydocker Terminal docker UI; backs the ld wrapper.
docker Container runtime; gates the Docker context indicator in the right prompt and backs the ld wrapper. Both consumers are guarded with type -q docker and degrade gracefully without it. Installing the daemon package does not enable/start the service — do that yourself if you want it running.
yt-dlp Video/media downloader; backs the yt-dlp wrapper function. The wrapper falls back to the system yt-dlp and the rest of the config works without it.
screen GNU screen; fallback backend for jobrunner when tmux is unavailable.

Terminal Emulators

GPU-accelerated terminal emulators. Only one is ever relevant to a given user — the one matching $TERM — so neither is installed by default. Skipped by fish-deps install/sync unless you pass --terminals (or --all).

Tool Description
kitty GPU-accelerated terminal; unlocks kitty-specific abbreviations and --hyperlink-format=kitty in the rg wrapper when $TERM = xterm-kitty.
wezterm GPU-accelerated terminal; unlocks WezTerm-specific abbreviations when it's the active terminal.

Integrations

Opt-in third-party services that require their own account/setup.

Tool Description
wakatime Developer time tracking
tailscale Mesh VPN client

Install Methods

The install priority for each tool:

Method Packages
cargo Rust tools (eza, lsd, bat, dust, ripgrep, trashy, zoxide, starship) — always gets the latest crate version
go install ov — preferred over the system PM when go is available; always gets the latest release
system PM paru / apt / brew / dnf / etc. — for tools without a crate or go install path
git clone fzf — installed from GitHub to ~/.fzf/
curl starship installer, fisher bootstrap, uv installer