4.8 KiB
Fish Shell Configuration
A production-grade Fish shell configuration targeting Fish 4.x. It provides:
-
Drop-in replacements for common Unix tools (ls, cat, rm, du, ping, less)
-
Deep Kitty and WezTerm terminal integration: tab/window/pane management from the command line
-
Automatic session logging: terminal scrollback, tmux/zellij panes, and paru/yay output captured to ~/.terminal_history (on by default; see below)
-
Automatic Python virtualenv activation on directory change
-
Cross-platform package management via pkg and fish-deps
-
AI session helpers for Claude Code and Antigravity
-
Catppuccin Mocha color theme throughout
┌───────────────────────────────────────────────────────────────────────────┐ │ CAUTION - SESSION LOGGING IS ON BY DEFAULT │ │ │ │ This configuration silently records terminal output to │ │ ~/.terminal_history: Kitty scrollback on window close, live tmux pane │ │ streams, zellij pane snapshots on exit, and full paru/yay output. These │ │ logs can contain command output, file contents, and secrets printed to │ │ the terminal. Nothing leaves your machine, but the files persist locally. │ │ │ │ Disable all logging with: set -U __fish_config_op_logging off │ │ Prefer a menu? Run the interactive picker: config-toggle │ │ See Section 7 (C5 - Logging and Capture) for the full breakdown. │ └───────────────────────────────────────────────────────────────────────────┘
The configuration is split across:
config.fish Main entry point; sets env vars and PATH
conf.d/
abbr.fish All abbreviations
autopair.fish Auto-pair brackets and quotes (bundled from jorgebucaran/autopair.fish)
cheat.fish cheat.sh tab completions
done.fish Desktop notifications for long commands
first_run.fish One-time init: Fisher bootstrap, theme, welcome
key_bindings.fish Custom key bindings and Vi mode
logging-events.fish C5 --on-variable event handlers; syncs logging state at startup
kitty-watcher-reminder.fish C5 per-session reminder to set up the Kitty watcher
paru-wrapper.fish Auto-generates ~/.local/bin/paru logging wrapper
puffer.fish !! / !$ / ./ expansion (bundled from nickeb96/puffer-fish)
tmux-logging.fish C5 starts tmux pipe-pane capture when fish runs inside tmux
zellij-logging.fish C5 fish_exit handler dumping zellij pane scrollback on exit
sponge_privacy.fish Sponge privacy patterns; filters credentials from history
starship.fish fish_prompt with OSC 133 shell-integration markers
tailscale.fish Tailscale CLI tab completions
theme.fish Catppuccin syntax highlight colors
tricks.fish PATH, bang-bang helpers, bat man pages, aliases
wakatime.fish WakaTime shell hook
yay-wrapper.fish Auto-generates ~/.local/bin/yay logging wrapper
zoxide.fish Zoxide z/zi integration; overrides cd
functions/ Custom functions, one per file, autoloaded
completions/ Tab completion scripts
integrations/
fzf.fish FZF Catppuccin theme and key binding config
scripts/
clean_progress_log.py Strips paru/yay typescript animations to clean static logs
docs/ Offline documentation and compiled man page
fish-config.md Primary source manual (terminal-readable)
fish-config.1 Compiled man page (auto-generated by CI)
fish-config.index Section index for help config navigation
html/ Chunked HTML docs (auto-generated by CI)
wiki/ Markdown wiki (auto-generated by CI)