Skip to content

Rootiest Fish 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/ Snippets sourced at startup
      • 00-version-check.fish Warns once if Fish is older than 4.0.0
      • __fish_config_op_registry.fish Generated component registry
      • abbr.fish All abbreviations
      • auto-pull.fish Background git pulls for opted-in repos
      • autopair.fish Auto-pair brackets and quotes
      • bash_expands.fish Bash-style history expansion
      • command-shadows.fish Keeps docs/command-shadows.json current
      • done.fish Desktop notifications for long commands
      • first_run.fish One-time init: Fisher bootstrap, theme
      • fzf.fish fzf key bindings and pickers
      • help.fish help command for config topics
      • key_bindings.fish Custom key bindings and Vi mode
      • kitty-watcher-reminder.fish C5 per-session Kitty watcher reminder
      • logging-events.fish C5 event handlers; syncs logging state
      • pkg-wrappers.fish Auto-generates paru/yay logging wrappers
      • puffer.fish !! / !$ / ./ expansion
      • session-env-offer.fish C6 one-time hint about session-env setup
      • sponge_privacy.fish Sponge privacy patterns
      • starship.fish fish_prompt shell-integration markers
      • theme.fish Saves the Catppuccin theme; FZF colors
      • tmux-logging.fish C5 starts tmux pipe-pane capture
      • tricks.fish PATH, bang-bang helpers, bat man pages
      • user-dots-functions.fish Puts your user-dots functions/ first
      • wakatime.fish WakaTime shell hook
      • zellij-logging.fish C5 fish_exit handler for zellij
      • 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_color.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_shadows_write.fish
      • __fish_config_sync_logging.fish
      • __fish_config_version_check.fish
      • __fish_help_header.fish
      • __fish_help_requested.fish
      • __fish_init_cache.fish
      • __fish_mark.fish
      • __fish_no_args.fish
      • __fish_palette.fish
      • __fish_real_command.fish
      • __fish_sponge_sensitive_pattern.fish
      • __fish_template_assemble.fish
      • __fish_template_check.fish
      • __fish_template_dir.fish
      • __fish_template_file.fish
      • __fish_template_fragment.fish
      • __fish_template_generated.fish
      • __fish_template_is_generated.fish
      • __fish_template_key_info.fish
      • __fish_template_locate.fish
      • __fish_template_meta.fish
      • __fish_template_name_ok.fish
      • __fish_template_names.fish
      • __fish_template_new.fish
      • __fish_template_phrase.fish
      • __fish_template_prompt.fish
      • __fish_template_regen.fish
      • __fish_template_settings.fish
      • __fish_template_store.fish
      • __fish_template_validate.fish
      • __fish_template_wizard.fish
      • __fish_template_write.fish
      • __fish_user_dots_dir.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
      • __session_env_apply_now.fish
      • __session_env_desktop.fish
      • __session_env_desktop_build.fish
      • __session_env_expand.fish
      • __session_env_has_systemd.fish
      • _agents_init_ensure_gitignore.fish
      • _agents_init_find.fish
      • _agents_init_migrate_public.fish
      • _agents_init_path_is_protected.fish
      • _agents_init_pull.fish
      • _agents_init_stub.fish
      • _agents_init_sync_instructions.fish
      • _agents_init_sync_public.fish
      • _agents_repo_ensure_symlink.fish
      • _agents_repo_install_tools.fish
      • _agents_repo_local_slug.fish
      • _agents_repo_net_git.fish
      • _agents_repo_slug.fish
      • _agents_repo_sync.fish
      • _agents_vault_bgpush.fish
      • _agents_vault_dir.fish
      • _agents_vault_ensure_gitignore.fish
      • _agents_vault_prune_agy.fish
      • _auto_pull_sync.fish
      • _autopair_backspace.fish
      • _autopair_insert_left.fish
      • _autopair_insert_right.fish
      • _autopair_insert_same.fish
      • _autopair_tab.fish
      • _fish_clipboard_copy.fish
      • _fish_clipboard_paste.fish
      • _fish_deps_ask.fish
      • _fish_deps_build_fish.fish
      • _fish_deps_catalog.fish
      • _fish_deps_detect_pm.fish
      • _fish_deps_ensure.fish
      • _fish_deps_fetch_verified.fish
      • _fish_deps_install.fish
      • _fish_deps_is_arch.fish
      • _fish_deps_marktext_appimage.fish
      • _fish_deps_pm_has_pkg.fish
      • _fish_deps_pm_install.fish
      • _fish_deps_pm_pkg.fish
      • _fish_deps_pm_upgrade.fish
      • _fish_deps_refresh_path.fish
      • _fish_deps_release_tag.fish
      • _fish_deps_run_script.fish
      • _fish_deps_status.fish
      • _fish_deps_update.fish
      • _fish_deps_wakatime_binary.fish
      • _fish_deps_win32yank_binary.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
      • _git_sweep_host.fish
      • _git_sweep_merged.fish
      • _git_sweep_open_prs.fish
      • _git_sweep_pr_page.fish
      • _git_sweep_token.fish
      • _mkrep_add_origin.fish
      • _mkrep_default_remote_cmd.fish
      • _mkrep_expand_template.fish
      • _mkrep_remote_url.fish
      • _mkrep_repo_exists.fish
      • _mkrep_say.fish
      • _pop_last_token.fish
      • _private_dir.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
      • _terminal_log_safe_name.fish
      • _tmux_pipe_log.fish
      • _zellij_dump_log.fish
      • agents-cleanup.fish
      • agents-init.fish
      • agents-vault.fish
      • AGENTS.md
      • 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
      • claude-docs.fish
      • claude-pr.fish
      • claude.fish
      • cleanup.fish
      • clone.fish
      • clonet.fish
      • config-help.fish
      • config-settings.fish
      • config-update.fish
      • copy.fish
      • cp.fish
      • detach.fish
      • dng2avif.fish
      • docker.fish
      • dockup.fish
      • dops.fish
      • du.fish
      • dusize.fish
      • edit.fish
      • fast-cli.fish
      • fc.fish
      • ffetch.fish
      • fish-deps.fish
      • fish-template.fish
      • fish_mode_prompt.fish
      • fish_prompt.fish
      • fish_right_prompt.fish
      • fzf-update.fish
      • fzf_configure_bindings.fish
      • gi.fish
      • gip.fish
      • gip4.fish
      • gip6.fish
      • git-clean.fish
      • git-sweep.fish
      • gitignore-scrub.fish
      • gitui.fish
      • gitup.fish
      • hist.fish
      • jobrunner.fish
      • joplin.fish
      • jr.fish
      • key-crypt.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
      • md.fish
      • mkcd.fish
      • mkdir.fish
      • mkrep.fish
      • mv.fish
      • open-url.fish
      • p.fish
      • parur.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
      • session-env.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-cleanup.fish
      • agents-init.fish
      • agents-vault.fish
      • auto-pull.fish
      • bd-pull.fish
      • bd.fish
      • cheat.fish
      • config-settings.fish
      • copilot.fish
      • deadbranch.fish
      • dng2avif.fish
      • edit.fish
      • fish-template.fish
      • fzf_configure_bindings.fish
      • gi.fish
      • git-clean.fish
      • git-sweep.fish
      • gitignore-scrub.fish
      • jobrunner.fish
      • key-crypt.fish
      • logs.fish
      • mkrep.fish
      • open-url.fish
      • ov.fish
      • play-media.fish
      • qr.fish
      • rand_string.fish
      • replay.fish
      • repo-open.fish
      • session-env.fish
      • smart_exit.fish
      • spark.fish
      • tailscale.fish
      • zoxide.fish
    • Directoryscripts/ Helper scripts and tools
      • Directoryagents-tools/ AGENTS.md git hooks and version-bump
        • …
      • claude-shell-prefix Strips telemetry opt-outs for claude
      • clean_progress_log.py Strips typescript animations for clean logs
      • cli-agent.md System prompt for the terminal assistant
      • config-settings-tui.py curses front-end for config-settings
      • kitty-fish-config-watcher.py Kitty logging watcher
      • session-env-select.py curses checkbox picker for session-env select
      • sync-labels.py Syncs Gitea labels to the GitHub mirror
    • Directorydata/ gi templates, word lists, data catalogs
      • …
    • Directorytemplates/ fish-template building blocks
      • Directorymodifiers/ How it runs: args, env, retry, log, …
        • …
      • Directorypresets/ Ready-made recipes: allow-telemetry, …
        • …
      • Directorytargets/ What runs: command, fallback, sequence, …
        • …
    • Directorythemes/ Catppuccin color themes
      • catppuccin-frappe.theme Frappé; Latte on light terminals
      • catppuccin-latte.theme Latte (light)
      • catppuccin-macchiato.theme Macchiato; Latte on light terminals
      • catppuccin-mocha.theme Mocha (default); Latte on light terminals
    • DirectoryLICENSES/ Licence texts for vendored code
      • …
    • Directorytests/ Test suite: fish tests/run-tests.fish
      • …
    • Directorydocs/ Offline documentation and man page
      • fish-config.md Generated manual
      • fish-config.1 Compiled man page (auto-generated)
      • fish-config.index Section index for help config
      • Directorymanual/ Manual source, one file per chapter
        • …
      • Directorysite/ Source for this documentation site
        • …