set fish_greeting # Noctis Azureus Ghostty color theme set -g fish_color_normal becfda set -g fish_color_command 49d6e9 # cyan - functions set -g fish_color_keyword df769b # magenta set -g fish_color_quote 49e9a6 # green - strings set -g fish_color_redirection 60b6eb # bright blue set -g fish_color_end df769b # magenta set -g fish_color_error e66533 # red set -g fish_color_param e4b781 # yellow - variables set -g fish_color_comment 475e6c # comment gray set -g fish_color_selection --background=0c3f5f set -g fish_color_search_match --background=1679b6 set -g fish_color_operator e69533 # bright yellow set -g fish_color_escape 60ebb1 # bright green - string escape set -g fish_color_autosuggestion 475e6c set -g fish_color_cwd 49ace9 # blue set -g fish_color_cwd_root e66533 set -g fish_color_user 49e9a6 set -g fish_color_host 49d6e9 set -g fish_color_host_remote e4b781 set -g fish_color_valid_path --underline set -g fish_color_option e4b781 # yellow set -g fish_pager_color_completion becfda set -g fish_pager_color_description 475e6c set -g fish_pager_color_prefix 49e9a6 --bold set -g fish_pager_color_progress becfda --background=0c3f5f set -g fish_pager_color_selected_background --background=0c3f5f # Bootstrap Fisher (reads plugins from fish_plugins) if not functions -q fisher curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source fisher update end function sesh-sessions set -l session (sesh list -t -c | fzf --height 40% --reverse --border-label ' sesh ' --border --prompt '⚡ ') commandline -f repaint if test -z "$session" return end sesh connect $session end function sesh-list set -l session (sesh list --icons | fzf \ --height 40% \ --reverse \ --border-label ' sesh ' \ --border \ --no-sort --ansi --border-label ' sesh ' --prompt '⚡ ' \ --header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \ --bind 'tab:down,btab:up' \ --bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list --icons)' \ --bind 'ctrl-t:change-prompt(🪟 )+reload(sesh list -t --icons)' \ --bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --icons)' \ --bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z --icons)' \ --bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \ --bind 'ctrl-d:execute(tmux kill-session -t {2..})+change-prompt(⚡ )+reload(sesh list --icons)' \ --preview-window 'right:55%' \ --preview 'sesh preview {}' \ --prompt '⚡ ') commandline -f repaint if test -z "$session" return end sesh connect $session end function y set tmp (mktemp -t "yazi-cwd.XXXXXX") yazi $argv --cwd-file="$tmp" if read -z cwd <"$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ] builtin cd -- "$cwd" end rm -f -- "$tmp" end ############### # Keybindings # ############### # emacs + vim set -g fish_key_bindings fish_hybrid_key_bindings bind -M default \cx\ce edit_command_buffer bind -M insert \cx\ce edit_command_buffer bind -M visual \cx\ce edit_command_buffer bind -M default \cp up-or-search bind -M insert \cp up-or-search bind -M visual \cp up-or-search bind -M default \cn down-or-search bind -M insert \cn down-or-search bind -M visual \cn down-or-search ## Sesh keybindings: keybinding: C-\ # if functions -q fish_vi_key_bindings # bind -M default \x1c sesh-list # bind -M insert \x1c sesh-list # else # bind \x1c sesh-list # end ## Sesh keybindings: keybinding: C-] if functions -q fish_vi_key_bindings bind -M default \c] sesh-list bind -M insert \c] sesh-list else bind \c] sesh-list end # Keybinding: C-] # if functions -q fish_vi_key_bindings # bind -M default \c] sesh-sessions # bind -M insert \c] sesh-sessions # else # bind \c] sesh-sessions # end alias vim nvim # Autocompletions function __load_run_py_completions --on-variable __RUN_PY_COMPLETIONS if test -n "$__RUN_PY_COMPLETIONS"; and test -f "$__RUN_PY_COMPLETIONS" source "$__RUN_PY_COMPLETIONS" end end # Also check on startup if test -n "$__RUN_PY_COMPLETIONS"; and test -f "$__RUN_PY_COMPLETIONS" source "$__RUN_PY_COMPLETIONS" end