# 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-settings` > - 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 agents-tools/ AGENTS.md version-bump script and git hooks (wired via core.hooksPath) 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) --- ## Table of Contents - [1. Configuration Variables](1-configuration-variables.md) - [2. Path Setup](2-path-setup.md) - [3. Key Bindings](3-key-bindings.md) - [4. Abbreviations](4-abbreviations.md) - [5. Functions Reference](5-functions-reference.md) - [6. Dependency Catalog](6-dependency-catalog.md) - [7. Customization](7-customization.md) - [8. Fisher Plugins](8-fisher-plugins.md) - [9. Installation](9-installation.md) - [10. Personalization](10-personalization.md) - [11. Viewing This Manual](11-viewing-this-manual.md)