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.
This commit is contained in:
@@ -8,8 +8,10 @@ helpKeywords:
|
||||
- deps-catalog
|
||||
---
|
||||
|
||||
fish-deps manages these tools. Run `fish-deps` to check status, or
|
||||
`fish-deps install` to install missing ones.
|
||||
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
|
||||
|
||||
@@ -18,13 +20,6 @@ fish-deps manages these tools. Run `fish-deps` to check status, or
|
||||
| `fish` | Fish shell >= 4.0 |
|
||||
| `fzf` | Fuzzy finder |
|
||||
|
||||
## Integrations
|
||||
|
||||
| Tool | Description |
|
||||
|---|---|
|
||||
| `wakatime` | Developer time tracking |
|
||||
| `tailscale` | Mesh VPN client |
|
||||
|
||||
## Recommended
|
||||
|
||||
| Tool | Description |
|
||||
@@ -39,19 +34,50 @@ fish-deps manages these tools. Run `fish-deps` to check status, or
|
||||
| `zoxide` | Smart cd with frecency |
|
||||
| `lsd` | `ls` replacement (fallback to `eza`) |
|
||||
| `bat` | Syntax-highlighted `cat` |
|
||||
| `btop` | Modern resource monitor |
|
||||
| `dust` | Disk usage tree (Rust) |
|
||||
| `duf` | Disk usage/free overview |
|
||||
| `prettyping` | Colorized ping wrapper |
|
||||
| `ov` | Modern pager (replaces `less`) |
|
||||
| `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 |
|
||||
| `lazygit` | Terminal git UI |
|
||||
| `lazydocker` | Terminal docker UI |
|
||||
| `trash` | Safe delete (`trash-cli`) |
|
||||
| `kitty` | GPU-accelerated terminal (primary) |
|
||||
| `wezterm` | GPU-accelerated terminal (alternative) |
|
||||
| `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. |
|
||||
| `yt-dlp` | Video/media downloader; backs the `yt-dlp` wrapper function. Optional — the wrapper falls back to the system `yt-dlp` and the rest of the config works 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
|
||||
|
||||
@@ -59,8 +85,9 @@ The install priority for each tool:
|
||||
|
||||
| Method | Packages |
|
||||
|---|---|
|
||||
| `cargo` | Rust tools (`eza`, `lsd`, `bat`, `dust`, `ov`, `ripgrep`, `trashy`, `zoxide`, `starship`) — always gets the latest crate version |
|
||||
| system PM | `paru` / `apt` / `brew` / `dnf` / etc. — for tools without a crate |
|
||||
| `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 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user