Skip to content

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
  • Optional session logging: terminal scrollback, tmux/zellij panes, and paru/yay output captured to ~/.terminal_history (off by default; see C5 Logging)
  • Automatic Python virtualenv activation on directory change
  • Cross-platform package management via pkg and fish-deps
  • AI scaffolding helpers for Claude Code and Antigravity
  • Catppuccin Mocha color theme throughout
Install nowFunctionsComponents

The configuration uses a structured file tree:

  • Directory~/.config/fish/
    • config.fish Main entry point; sets env vars and PATH
    • Directoryconf.d/
      • abbr.fish All abbreviations
      • autopair.fish Auto-pair brackets and quotes
      • done.fish Desktop notifications for long commands
      • first_run.fish One-time init: Fisher bootstrap, theme
      • key_bindings.fish Custom key bindings and Vi mode
      • logging-events.fish C5 event handlers; syncs logging state
      • kitty-watcher-reminder.fish C5 per-session Kitty watcher reminder
      • paru-wrapper.fish Auto-generates paru logging wrapper
      • puffer.fish !! / !$ / ./ expansion
      • tmux-logging.fish C5 starts tmux pipe-pane capture
      • zellij-logging.fish C5 fish_exit handler for zellij
      • sponge_privacy.fish Sponge privacy patterns
      • starship.fish fish_prompt shell-integration markers
      • theme.fish Catppuccin syntax highlight colors
      • tricks.fish PATH, bang-bang helpers, bat man pages
      • wakatime.fish WakaTime shell hook
      • yay-wrapper.fish Auto-generates yay logging wrapper
      • zoxide.fish Zoxide z/zi integration; overrides cd
    • Directoryfunctions/ Custom functions, one per file
      • __auto_source_fallback_venv.fish
      • __config_settings_apply.fish
      • __config_settings_get_raw.fish
      • __config_settings_get_val.fish
      • __config_settings_set_value.fish
      • __config_settings_state.fish
      • __config_settings_subcats.fish
      • __fish_config_op_cascade.fish
      • __fish_config_op_enabled.fish
      • __fish_config_op_registry_lookup.fish
      • __fish_config_op_registry_rebuild.fish
      • __fish_config_sync_logging.fish
      • __fish_help_header.fish
      • __fish_palette.fish
      • __fish_real_command.fish
      • __fish_user_dots_link.fish
      • __fish_variable_check.fish
      • __fzf_inline_picker.fish
      • __insert_previous_path_head.fish
      • __interactive_history_sub.fish
      • __jobrunner_sessions.fish
      • __kitty_logging_dir.fish
      • __kitty_logging_has_watcher.fish
      • __kitty_logging_version.fish
      • __substitute_typo.fish
      • _agents_init_ensure_gitignore.fish
      • _agents_repo_ensure_symlink.fish
      • _agents_repo_install_tools.fish
      • _agents_repo_local_slug.fish
      • _agents_repo_slug.fish
      • _agents_repo_sync.fish
      • _agents_vault_dir.fish
      • _auto_pull_sync.fish
      • _autopair_backspace.fish
      • _autopair_insert_left.fish
      • _autopair_insert_right.fish
      • _autopair_insert_same.fish
      • _autopair_tab.fish
      • _fish_deps_catalog.fish
      • _fish_deps_detect_pm.fish
      • _fish_deps_install.fish
      • _fish_deps_pm_install.fish
      • _fish_deps_pm_upgrade.fish
      • _fish_deps_status.fish
      • _fish_deps_update.fish
      • _fish_mkdir_p.fish
      • _fish_source_scoped.fish
      • _fzf_configure_bindings_help.fish
      • _fzf_extract_var_info.fish
      • _fzf_preview_changed_file.fish
      • _fzf_preview_file.fish
      • _fzf_preview_image.fish
      • _fzf_preview_media.fish
      • _fzf_report_diff_type.fish
      • _fzf_report_file_type.fish
      • _fzf_search_directory.fish
      • _fzf_search_git_log.fish
      • _fzf_search_git_status.fish
      • _fzf_search_history.fish
      • _fzf_search_processes.fish
      • _fzf_search_variables.fish
      • _fzf_wrapper.fish
      • _prune_terminal_logs.fish
      • _puffer_fish_expand_bang.fish
      • _puffer_fish_expand_buck.fish
      • _puffer_fish_expand_dot.fish
      • _puffer_fish_expand_star.fish
      • _qalc_eval.fish
      • _replace_command_token.fish
      • _scrollback_prune_junk.fish
      • _smart_execute.fish
      • _tmux_pipe_log.fish
      • _zellij_dump_log.fish
      • agents-init.fish
      • agents-vault.fish
      • agy.fish
      • antigravity-ide.fish
      • auto-pull.fish
      • bash.fish
      • bd-pull.fish
      • bkg.fish
      • branch.fish
      • cat.fish
      • cdi.fish
      • cffetch.fish
      • cheat.fish
      • check_fish_deps.fish
      • claude-docs.fish
      • claude-pr.fish
      • claude.fish
      • cleanup.fish
      • clone.fish
      • clonet.fish
      • config-help.fish
      • config-settings.fish
      • config-toggle.fish
      • config-update.fish
      • copy.fish
      • detach.fish
      • dng2avif.fish
      • docker.fish
      • dockup.fish
      • dops.fish
      • du.fish
      • dusize.fish
      • edit.fish
      • fast-cli.fish
      • fast.fish
      • fc.fish
      • ffetch.fish
      • fish-deps.fish
      • fish_mode_prompt.fish
      • fish_prompt.fish
      • fish_right_prompt.fish
      • fisher.fish
      • fzf-update.fish
      • fzf_configure_bindings.fish
      • gi.fish
      • gip.fish
      • gip4.fish
      • gip6.fish
      • git-clean.fish
      • gitui.fish
      • gitup.fish
      • hist.fish
      • jobrunner.fish
      • joplin.fish
      • jr.fish
      • kitty-logging.fish
      • ld.fish
      • lD.fish
      • less.fish
      • limine-edit.fish
      • lock.fish
      • logs.fish
      • ls.fish
      • lsr.fish
      • lss.fish
      • lstree.fish
      • lt.fish
      • ltr.fish
      • lx.fish
      • mkcd.fish
      • mkdir.fish
      • mv.fish
      • open-url.fish
      • p.fish
      • parur.fish
      • paste.fish
      • ping.fish
      • pkg.fish
      • play-media.fish
      • poke.fish
      • ports.fish
      • qc.fish
      • qr.fish
      • rand_string.fish
      • rawfish.fish
      • replay.fish
      • repo-open.fish
      • rg.fish
      • rm.fish
      • sbver.fish
      • screensleep.fish
      • scrub.fish
      • search.fish
      • smart_exit.fish
      • spark.fish
      • split.fish
      • sponge_filter_secrets.fish
      • spwin.fish
      • ssh.fish
      • steam-dl.fish
      • sudo-toggle.fish
      • superpowers.fish
      • swapstat.fish
      • tab.fish
      • tmux-clean.fish
      • top.fish
      • upgrade.fish
      • view.fish
      • wake-lock.fish
      • y.fish
      • yt-dlp.fish
      • zoxide.fish
    • Directorycompletions/ Tab completion scripts, autoloaded on demand
      • agents-vault.fish
      • auto-pull.fish
      • bd.fish
      • cheat.fish
      • copilot.fish
      • deadbranch.fish
      • fisher.fish
      • fzf_configure_bindings.fish
      • jobrunner.fish
      • ov.fish
      • play-media.fish
      • rand_string.fish
      • replay.fish
      • spark.fish
      • tailscale.fish
      • zoxide.fish
    • Directoryintegrations/
      • fzf.fish FZF Catppuccin theme and key bindings
    • Directoryscripts/
      • clean_progress_log.py Strips typescript animations for clean logs
      • Directoryagents-tools/ AGENTS.md scripts and git hooks
    • Directorydocs/ Offline documentation and man page
      • fish-config.md Primary source manual
      • fish-config.1 Compiled man page (auto-generated)
      • fish-config.index Section index for help config
      • Directoryhtml/ Chunked HTML docs (auto-generated)
      • Directorywiki/ Markdown wiki (auto-generated)