############################################################################################################ # # ██████╗ ██████╗ ███╗ ██╗███████╗██╗ ██████╗ ███████╗██╗███████╗██╗ ██╗ # ██╔════╝██╔═══██╗████╗ ██║██╔════╝██║██╔════╝ ██╔════╝██║██╔════╝██║ ██║ # ██║ ██║ ██║██╔██╗ ██║█████╗ ██║██║ ███╗ █████╗ ██║███████╗███████║ # ██║ ██║ ██║██║╚██╗██║██╔══╝ ██║██║ ██║ ██╔══╝ ██║╚════██║██╔══██║ # ╚██████╗╚██████╔╝██║ ╚████║██║ ██║╚██████╔╝██╗██║ ██║███████║██║ ██║ # ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ # ############################################################################################################ # Fish configuration ------------------------------------------------------------- {{{ set fish_greeting export LS_COLORS="$(vivid generate gruvbox-dark)" # Plugins installation and configuration ------------------------------------------------------------- {{{ # Check if fisher is installed if not set -q _fisher_plugins curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher end # Configuration for automatic Fisher package manager updates # Update interval is set to one day (86400 seconds) set -g FISHER_UPDATE_INTERVAL 86400 set -g fisher_update_timestamp_file ~/.cache/fisher_last_update # Get the last modification timestamp of a file function get_file_timestamp stat --format=%Y "$argv[1]" 2>/dev/null end # Check if Fisher needs to be updated based on the timestamp file function needs_update set -l current_time (date +%s) if not test -e "$fisher_update_timestamp_file" return 0 end set -l file_time (get_file_timestamp "$fisher_update_timestamp_file") test "$current_time" -gt 0 -a "$file_time" -gt 0 and test (math "$current_time - $file_time") -gt $FISHER_UPDATE_INTERVAL end # Update Fisher packages if needed and update timestamp function update_fisher mkdir -p (dirname $fisher_update_timestamp_file) if needs_update fisher update > /dev/null 2>&1 touch "$fisher_update_timestamp_file" end end # Run Fisher update check only in interactive shells if status is-interactive update_fisher end theme_gruvbox dark soft set sponge_regex_patterns '^\s+.*' set sponge_allow_previously_successful true # }}} # Completion ------------------------------------------------------------- {{{ if command -v atuin >/dev/null 2>&1 && not test -f $HOME/.config/fish/completions/atuin.fish atuin gen-completions --shell fish --out-dir $HOME/.config/fish/completions echo "Atuin completions generated" end if command -v chezmoi >/dev/null 2>&1 && not test -f $HOME/.config/fish/completions/chezmoi.fish chezmoi completion fish --output=$HOME/.config/fish/completions/chezmoi.fish echo "Chezmoi completions generated" end if command -v rip >/dev/null 2>&1 && not test -f $HOME/.config/fish/completions/rip.fish rip completion fish > $HOME/.config/fish/completions/rip.fish echo "Rip completions generated" end # }}} # }}} # User configuration ---------------------------------------------------------------- {{{ # SSH Configuration ---------------------------------------------------------------- {{{ # Preferred editor for local and remote sessions if not set -q SSH_CONNECTION set -x EDITOR nvim else set -x EDITOR vim end # Set the ssh agent if it is not already running if not pgrep ssh-agent >/dev/null eval (ssh-agent -s) end # Function to add SSH keys to the agent function add_ssh_key set key_path $argv[1] set key_name (basename $key_path) if test -f $key_path; and not ssh-add -l | grep -q $key_name ssh-add $key_path > /dev/null 2>&1 end end # Add personal SSH keys add_ssh_key ~/.ssh/id_ed25519 add_ssh_key ~/.ssh/hexasec # }}} # Aliases ---------------------------------------------------------------- {{{ # For a full list of active aliases, run `alias`. alias ls='lsd' alias ll='ls -alF' alias rm='rip' alias cat='bat' alias grep='rg' alias find='fd -H' alias sed='sd' alias c='clear' alias prolog='~/.config/scryer-prolog/target/release/scryer-prolog' # À remplacer par prolog='scryer-prolog' alias csc='sudo cytech-site-change' alias quit='exit' alias compresse='echo "tar -cv [nomDuFichieràCompresser] -f [nomArchive].tar"' alias maj='~/./miseajour.sh' alias vi=(which vim) alias vim='nvim' # }}} # }}} # Shell enhancements initialization ---------------------------------------------------------------- {{{ # Set the Oh-My-Posh prompt #oh-my-posh init fish --config $HOME/.config/ohmyposh/prompt.json | source # Or Starship function starship_transient_prompt_func starship module character end starship init fish | source enable_transience # Allow zoxide to work and to replace cd zoxide init --cmd cd fish | source # Set atuin atuin init fish | source # }}}