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.
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
Recommended
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