diff --git a/README.md b/README.md index 8b8155f..ccb7662 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ This config layers on top of the CachyOS base Fish configuration and adds: - **Catppuccin Mocha** theming throughout (prompt, FZF, syntax highlighting) - **Starship** prompt with VI key bindings -- **Fisher** plugin management with FZF key bindings and Catppuccin syntax colors +- **Fisher** plugin manager bootstrapped automatically; plugin functionality (FZF bindings, Catppuccin theme, done notifications, autopair, puffer-fish) bundled directly with the config - **Smart CLI wrappers** that prefer modern tools (`eza`, `bat`, `btop`, `dust`, `prettyping`) with graceful fallbacks - **Auto Python venv** activation on directory change (direnv-aware) - **Kitty terminal** deep integration for splits, tabs, and SSH @@ -66,7 +66,7 @@ mv ~/.config/fish ~/.config/fish.bak git clone https://git.rootiest.dev/rootiest/fish-config.git ~/.config/fish ``` -Then open a new Fish shell — Fisher and all plugins will be installed automatically on first launch, and the Catppuccin Mocha theme will be applied. +Then open a new Fish shell — Fisher will be installed automatically on first launch and the Catppuccin Mocha theme will be applied. All plugin functionality is bundled directly with this config and requires no additional installation. A [chezmoi](https://www.chezmoi.io/) dotfile manager is also configured — secrets are sourced from `~/.config/.user-dots/fish/secrets.fish` and excluded from version control. diff --git a/conf.d/first_run.fish b/conf.d/first_run.fish index b6f6e48..ef96983 100644 --- a/conf.d/first_run.fish +++ b/conf.d/first_run.fish @@ -35,7 +35,7 @@ if not type -q fisher if curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source echo " [first-run] Fisher installed." if not fisher update 2>/dev/null - echo " [first-run] Plugin sync failed — run 'fisher update' manually." >&2 + echo " [first-run] Fisher update failed — run 'fisher update' manually." >&2 end else echo " [first-run] Fisher install failed — run 'fisher update' manually." >&2 diff --git a/docs/fish-config.index b/docs/fish-config.index index 74e80b1..273c354 100644 --- a/docs/fish-config.index +++ b/docs/fish-config.index @@ -29,8 +29,8 @@ keybindings=# 3. KEY BINDINGS bindings=# 3. KEY BINDINGS key-bindings=# 3. KEY BINDINGS keys=# 3. KEY BINDINGS -fzf-bindings=## FZF Bindings (from fzf --fish integration) -fzf=## FZF Bindings (from fzf --fish integration) +fzf-bindings=## FZF Bindings (bundled from PatrickF1/fzf.fish) +fzf=## FZF Bindings (bundled from PatrickF1/fzf.fish) # ── Section 4: Abbreviations ────────────────────────────────── abbreviations=# 4. ABBREVIATIONS @@ -166,10 +166,24 @@ universal=## Fish Universal Variables # ── Section 8: Fisher Plugins ───────────────────────────────── plugins=# 8. FISHER PLUGINS fisher=# 8. FISHER PLUGINS +bundled-plugins=## Bundled Plugin Functionality +fish-plugins-manifest=## fish_plugins Manifest -# ── Section 9: Viewing This Manual ─────────────────────────── -viewing=# 9. VIEWING THIS MANUAL -manual=# 9. VIEWING THIS MANUAL +# ── Section 9: Installation ──────────────────────────────────── +installation=# 9. INSTALLATION +install=# 9. INSTALLATION +sentinel=## Return Sentinel +updating=## Updating + +# ── Section 10: Personalization ─────────────────────────────── +personalization=# 10. PERSONALIZATION +personalize=# 10. PERSONALIZATION +secrets=## secrets.fish +local-config=## local.fish + +# ── Section 11: Viewing This Manual ────────────────────────── +viewing=# 11. VIEWING THIS MANUAL +manual=# 11. VIEWING THIS MANUAL ov=## With ov (recommended) man-page=## As a man page (if compiled) manpage=## As a man page (if compiled) diff --git a/docs/fish-config.md b/docs/fish-config.md index af8c2fb..57c6dcc 100644 --- a/docs/fish-config.md +++ b/docs/fish-config.md @@ -279,7 +279,7 @@ are active in Insert, Normal, and Visual modes unless noted. line to open an fzf picker and insert a selection at the cursor position. -## FZF Bindings (from PatrickF1/fzf.fish) +## FZF Bindings (bundled from PatrickF1/fzf.fish) Ctrl+R Search command history Ctrl+Alt+F Search git-tracked files @@ -1395,9 +1395,9 @@ To customize, override FZF_DEFAULT_OPTS in local.fish. ### Catppuccin Mocha Syntax Highlighting -The catppuccin/fish plugin applies syntax highlight colors on first run. -Colors are stored in fish_variables (universal). To switch variants, install -a different theme from the themes/ directory: +The Catppuccin Mocha theme ships with this config in themes/ and is applied +on first run via `conf.d/first_run.fish`. Colors are stored in fish_variables +(universal). To switch variants, install a different theme from themes/: fish_config theme save "Catppuccin Latte" @@ -1417,18 +1417,33 @@ testing), run: Then open a new shell. -The plugin list is maintained in fish_plugins at the config root. +## Bundled Plugin Functionality + +Plugin functionality is bundled directly with this config rather than managed +through Fisher. The bundled versions include customizations for Fish 4.x +compatibility and improved behavior that differ from their upstream releases. +Installing them through Fisher would overwrite these customizations. + +Bundled components and their upstream origins: + + catppuccin/fish → themes/ + conf.d/theme.fish + PatrickF1/fzf.fish → functions/_fzf_*.fish + conf.d/fzf.fish + franciscolourenco/done → conf.d/done.fish + jorgebucaran/autopair.fish → functions/_autopair_*.fish + conf.d/autopair.fish + nickeb96/puffer-fish → functions/_puffer_fish_*.fish + conf.d/puffer.fish + +Do not run `fisher install` for these — it will overwrite the customized +versions. To update their behavior, edit the relevant bundled files directly. + +## fish_plugins Manifest + +The `fish_plugins` file at the config root contains only the Fisher manager +entry itself: jorgebucaran/fisher Plugin manager itself - catppuccin/fish Catppuccin Mocha color theme - PatrickF1/fzf.fish fzf integration for Fish - franciscolourenco/done Desktop notification when long commands finish - jorgebucaran/autopair.fish Auto-pair brackets and quotes - meaningful-ooo/sponge Remove failed commands from history - nickeb96/puffer-fish !! / !$ / ./ expansion -Run `fisher update` to update all plugins, or `fish-deps update` which -calls fisher update as its first step. +To update Fisher, run `fisher update` or `fish-deps update` which calls it +as its first step. --- @@ -1439,8 +1454,9 @@ This configuration is managed as a git repository. To deploy on a new machine: mv ~/.config/fish ~/.config/fish.bak # back up any existing config git clone https://git.rootiest.dev/rootiest/fish-config.git ~/.config/fish -Then open a new Fish shell. Fisher and all plugins install automatically on -first launch and the Catppuccin Mocha theme is applied. +Then open a new Fish shell. Fisher installs automatically on first launch +and the Catppuccin Mocha theme is applied. All other plugin functionality is +bundled directly with this config and requires no additional installation. ## Return Sentinel diff --git a/requirements.md b/requirements.md index 0462373..c787555 100644 --- a/requirements.md +++ b/requirements.md @@ -116,5 +116,9 @@ Non-standard applications required by this fish shell configuration. | Tool | Description | Notes | |------|-------------|-------| -| `fisher` | Fish plugin manager | Manages plugins via `fish_plugins` | -| `catppuccin/fish` | Catppuccin theme for Fish | Listed in `fish_plugins` | +| `fisher` | Fish plugin manager | Bootstrapped automatically on first run; only entry in `fish_plugins` | + +Plugin functionality (Catppuccin theme, FZF bindings, done notifications, autopair, puffer-fish +expansions) is bundled directly with this config in `functions/`, `conf.d/`, and `themes/`. These are +customized versions — do not install them via `fisher install`, as doing so would overwrite the +bundled modifications.