feat(config): refactor config.fish, add XDG compliance, new functions, and keybindings
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>
This commit is contained in:
@@ -73,6 +73,7 @@ abbr -a g git
|
||||
abbr -a ag antigravity
|
||||
abbr -a ag. antigravity .
|
||||
# Quit
|
||||
abbr -a /exit exit
|
||||
if test "$TERM" = xterm-kitty
|
||||
abbr -a :q kitty @ close-window # Kitty (Closes the active split/pane)
|
||||
abbr -a :Q kitty @ close-tab # Kitty (Closes the whole tab)
|
||||
|
||||
@@ -36,6 +36,14 @@
|
||||
# If the current command text is empty, the previous command's first token will be used instead.
|
||||
# ──────────────────────────────────────────────────────────────────────
|
||||
|
||||
# ────────────── Bind Quick Qalc Evaluation to Ctrl+Alt+= ──────────────
|
||||
# Passes the current command line buffer to the Qalculate! CLI (qalc)
|
||||
#
|
||||
# Example: If you type `150 * 1.08` and press Ctrl+Alt+=,
|
||||
# it will print the result (162) and clear the command line.
|
||||
# This allows for rapid-fire math without leaving the current shell.
|
||||
# ──────────────────────────────────────────────────────────────────────
|
||||
|
||||
function fish_user_key_bindings
|
||||
|
||||
# ───────────────────────────── Set Bindings ─────────────────────────────
|
||||
@@ -44,6 +52,7 @@ function fish_user_key_bindings
|
||||
bind ctrl-g __insert_previous_path_head
|
||||
bind ctrl-f __interactive_history_sub
|
||||
bind ctrl-alt-u _replace_command_token
|
||||
bind ctrl-alt-= qalc_eval
|
||||
|
||||
# Set bindings for all Vi modes:
|
||||
# 'default' is Vi-Command, 'insert' is Vi-Insert, 'visual' is Vi-Visual
|
||||
@@ -51,5 +60,6 @@ function fish_user_key_bindings
|
||||
bind --mode $mode ctrl-g __insert_previous_path_head
|
||||
bind --mode $mode ctrl-f __interactive_history_sub
|
||||
bind --mode $mode ctrl-alt-u _replace_command_token
|
||||
bind --mode $mode ctrl-alt-= qalc_eval
|
||||
end
|
||||
end
|
||||
|
||||
+10
-3
@@ -4,10 +4,9 @@
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Fish Theme │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
#
|
||||
# Catppuccin Mocha syntax highlighting colors.
|
||||
# These variables were migrated from the universal scope to global scope.
|
||||
# Catppuccin Mocha
|
||||
|
||||
# ────────────────────── Syntax highlighting colors ──────────────────────
|
||||
set --global fish_color_autosuggestion 6c7086
|
||||
set --global fish_color_cancel f38ba8
|
||||
set --global fish_color_command 89b4fa
|
||||
@@ -47,3 +46,11 @@ set --global fish_pager_color_selected_background
|
||||
set --global fish_pager_color_selected_completion
|
||||
set --global fish_pager_color_selected_description
|
||||
set --global fish_pager_color_selected_prefix
|
||||
|
||||
# ─────────────────────────── FZF theme colors ───────────────────────────
|
||||
set -Ux FZF_DEFAULT_OPTS "\
|
||||
--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \
|
||||
--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \
|
||||
--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \
|
||||
--color=selected-bg:#45475A \
|
||||
--color=border:#6C7086,label:#CDD6F4"
|
||||
|
||||
Reference in New Issue
Block a user