- config.fish: add ~/.fzf/bin to PATH for git-installed fzf
- config.fish: prefer fzf --fish | source (fzf >= 0.48, always
version-matched) with fallback to integrations/fzf.fish for
older builds; erase plugin bindings reliably when fzf is absent
- functions/fzf-update.fish: install or upgrade fzf from git HEAD
using --bin so shell config files are not modified
conf.d/fzf.fish is owned by Fisher and gets restored to the plugin's
original on fisher update, so any guard placed there is unreliable.
config.fish is never touched by Fisher, making it the right place to
call _fzf_uninstall_bindings after conf.d has already run and set up
the fzf key bindings on machines where fzf is not installed.
Replace hardcoded \$HOME/.config/fish paths with the canonical
\$__fish_config_dir variable for portability. Add proper quoting around
all path strings. Introduce a dot_fish local variable to reduce
repetition in user-dots sourcing blocks. Add LESS=-R for color support
in the pager.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Restructure and expand the Fish shell configuration for better XDG compliance,
interactive-session gating, modularity, and ergonomics.
config.fish:
- Add full XDG Base Directory variable block (XDG_CONFIG_HOME, XDG_CACHE_HOME,
XDG_DATA_HOME, XDG_STATE_HOME) and redirect tool caches/configs accordingly
(cargo, rustup, go, bun, npm, gnupg, wakatime, wget, nvidia, codeium, etc.)
- Add editor setup with `type -q nvim` guard and NVIM_APPNAME
- Add CDPATH block (., ~/projects, ~) with explanatory comments
- Gate all interactive-only setup (key bindings, FZF, direnv, starship, secrets,
local overrides, CLAUDE_CODE_NO_FLICKER) behind `status is-interactive`
- Guard FZF integration source behind a file-existence check
- Move secrets.fish and local.fish sourcing into the interactive block as overrides
- Remove obsolete universal `cdp` variable and duplicate PATH/editor blocks
- Update PATH entries to use XDG-resolved $CARGO_HOME and $BUN_INSTALL
conf.d/theme.fish:
- Move FZF_DEFAULT_OPTS (Catppuccin Mocha palette) from config.fish into theme.fish
so all theming lives in one place
- Add section header for FZF colors; condense file header comment
conf.d/abbr.fish:
- Add `/exit` abbreviation as a vim-style alias for the `exit` builtin
conf.d/key_bindings.fish:
- Bind Ctrl+Alt+= to new `qalc_eval` function (inline Qalculate! evaluation)
- Add binding in both normal and all Vi modes
- Add descriptive comment block explaining the keybinding purpose
functions/bash.fish:
- Pass `--rcfile "$XDG_CONFIG_HOME/bash/bashrc"` so bash respects XDG config location
functions/cat.fish:
- Extend cat wrapper: detect directory arguments and delegate to `ls` instead of bat
- Preserve stdin-passthrough behavior when no arguments are provided
functions/__auto_source_fallback_venv.fish (new):
- Extract auto-venv PWD watcher from config.fish into its own autoloaded function file
- Skips activation when direnv manages the directory (.envrc present or DIRENV_DIR set)
- Deactivates venv when leaving its project tree
functions/ld.fish (new):
- Wrapper for lazydocker that injects the active Docker context's DOCKER_HOST,
enabling correct context-aware operation
functions/joplin.fish (new):
- Joplin CLI wrapper function
functions/qalc_eval.fish (new):
- Inline Qalculate! evaluator: reads the current commandline buffer, passes it to
`qalc`, prints the result, and clears the buffer for rapid-fire math in the shell
README.md:
- Remove stale `cdp` variable example from the local.fish documentation section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add a Fisher install prompt to config.fish so new installs require only
cloning the repo — plugins and theme are applied automatically on first
shell open. Simplify README installation steps accordingly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>