137 lines
7.6 KiB
Bash
137 lines
7.6 KiB
Bash
# ~/.zshrc : servyass (aussi utilisé par root : /root/.zshrc le charge, d'où les chemins absolus)
|
||
# Style du portfolio : fond noir, accent lime #d3fd50, encre #f5f5f0, gris #8a8a85, ambre #ffcf4a, rouge #ff5f5f.
|
||
# Ancienne config : ~/backups/zsh-20261008/
|
||
|
||
export PATH="$HOME/.local/bin:$PATH"
|
||
export EDITOR=${EDITOR:-nano}
|
||
export LANG=${LANG:-fr_FR.UTF-8}
|
||
|
||
# ── Historique ────────────────────────────────────────────────────────
|
||
HISTFILE=~/.zsh_history
|
||
HISTSIZE=20000
|
||
SAVEHIST=20000
|
||
setopt histignorealldups histignorespace sharehistory extendedhistory
|
||
setopt autocd interactivecomments nobeep
|
||
bindkey -e
|
||
|
||
# ── Complétion : menu navigable, couleurs du thème ────────────────────
|
||
autoload -Uz compinit && compinit -C
|
||
zstyle ':completion:*' menu select
|
||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
|
||
zstyle ':completion:*' group-name ''
|
||
zstyle ':completion:*:descriptions' format $'%F{#d3fd50}── %d%f'
|
||
zstyle ':completion:*:warnings' format $'%F{#ff5f5f}── aucun résultat%f'
|
||
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
||
|
||
# ── Couleurs de ls, man/less ──────────────────────────────────────────
|
||
# sg/su/ow/tw/st : sans fond coloré (beaucoup de fichiers de ~ sont setgid à cause de FileBrowser)
|
||
export LS_COLORS='su=38;2;255;95;95:sg=38;2;245;245;240:ow=1;38;2;211;253;80:tw=1;38;2;211;253;80:st=1;38;2;211;253;80:ca=0:di=1;38;2;211;253;80:ln=38;2;124;200;255:ex=38;2;255;207;74:or=38;2;255;95;95:mi=38;2;255;95;95:*.tar=38;2;190;120;255:*.gz=38;2;190;120;255:*.zip=38;2;190;120;255:*.md=38;2;245;245;240:*.yml=38;2;160;160;155:*.json=38;2;160;160;155'
|
||
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
||
export LESS='-R'
|
||
export LESS_TERMCAP_md=$'\e[1;38;2;211;253;80m' LESS_TERMCAP_me=$'\e[0m'
|
||
export LESS_TERMCAP_us=$'\e[4;38;2;245;245;240m' LESS_TERMCAP_ue=$'\e[0m'
|
||
export LESS_TERMCAP_so=$'\e[38;2;10;10;10;48;2;211;253;80m' LESS_TERMCAP_se=$'\e[0m'
|
||
export MANPAGER='less -R'
|
||
|
||
# ── Alias ─────────────────────────────────────────────────────────────
|
||
alias ls='ls --color=auto --group-directories-first'
|
||
alias ll='ls -lah --color=auto --group-directories-first'
|
||
alias grep='grep --color=auto'
|
||
alias ..='cd ..' ...='cd ../..'
|
||
alias ec="$EDITOR /home/yass/.zshrc" # éditer ce fichier (même pour root)
|
||
alias sc="source $HOME/.zshrc" # recharger
|
||
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
|
||
alias motd='servyass_banner' # réafficher l'accueil
|
||
|
||
# ── Prompt ────────────────────────────────────────────────────────────
|
||
# SERVYASS ~/chemin sur main● · 12s
|
||
# ❯ ✕ 1 14:02:05
|
||
autoload -Uz vcs_info add-zsh-hook
|
||
setopt promptsubst
|
||
zstyle ':vcs_info:*' enable git
|
||
zstyle ':vcs_info:git:*' check-for-changes true
|
||
zstyle ':vcs_info:git:*' unstagedstr '%F{#ffcf4a}●%f'
|
||
zstyle ':vcs_info:git:*' stagedstr '%F{#d3fd50}✚%f'
|
||
zstyle ':vcs_info:git:*' formats ' %F{#8a8a85}sur%f %F{#d3fd50}%b%f%u%c'
|
||
zstyle ':vcs_info:git:*' actionformats ' %F{#8a8a85}sur%f %F{#d3fd50}%b%f %F{#ff5f5f}(%a)%f%u%c'
|
||
|
||
typeset -g _yb_t0 _yb_took _yb_first=1
|
||
_yb_preexec() { _yb_t0=$EPOCHREALTIME; print -Pn "\e]0;servyass · %~ · ${1[1,40]}\a"; }
|
||
_yb_precmd() {
|
||
vcs_info
|
||
_yb_took=''
|
||
if [[ -n $_yb_t0 ]]; then
|
||
local s=$(( ${EPOCHREALTIME%.*} - ${_yb_t0%.*} ))
|
||
if (( s >= 60 )); then _yb_took=" %F{#8a8a85}·%f %F{#ffcf4a}$(( s / 60 )) min $(( s % 60 )) s%f"
|
||
elif (( s >= 3 )); then _yb_took=" %F{#8a8a85}·%f %F{#ffcf4a}${s} s%f"; fi
|
||
_yb_t0=''
|
||
fi
|
||
(( _yb_first )) && _yb_first=0 || print # une ligne d'air entre deux commandes
|
||
print -Pn "\e]0;servyass · %~\a"
|
||
}
|
||
zmodload zsh/datetime
|
||
add-zsh-hook preexec _yb_preexec
|
||
add-zsh-hook precmd _yb_precmd
|
||
|
||
# pastille d'hôte : lime pour yass, rouge en root
|
||
_yb_host='%(!.%K{#ff5f5f}%F{#0a0a0a}%B ROOT · SERVYASS %b%f%k.%K{#d3fd50}%F{#0a0a0a}%B SERVYASS %b%f%k)'
|
||
PROMPT='${_yb_host} %B%F{#f5f5f0}%(5~|…/%3~|%~)%f%b${vcs_info_msg_0_}${_yb_took}
|
||
%(?.%F{#d3fd50}.%F{#ff5f5f})❯%f '
|
||
RPROMPT='%(?..%F{#ff5f5f}✕ %?%f )%F{#5d5d58}%*%f'
|
||
PROMPT2='%F{#5d5d58}·%f '
|
||
|
||
# ── Plugins (paquets Debian + oh-my-zsh déjà présents) ─────────────────
|
||
_omz=/home/yass/.zplug/repos/ohmyzsh/ohmyzsh/plugins
|
||
[[ -r $_omz/sudo/sudo.plugin.zsh ]] && source $_omz/sudo/sudo.plugin.zsh # Échap Échap = ajoute sudo
|
||
[[ -r $_omz/git/git.plugin.zsh ]] && source $_omz/git/git.plugin.zsh # alias git (gst, gco, gp...)
|
||
unset _omz
|
||
|
||
if [[ -r /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then
|
||
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#5d5d58'
|
||
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||
fi
|
||
|
||
# fzf : Ctrl+R historique, Ctrl+T fichiers, Alt+C dossiers
|
||
[[ -r /usr/share/doc/fzf/examples/key-bindings.zsh ]] && source /usr/share/doc/fzf/examples/key-bindings.zsh
|
||
[[ -r /usr/share/doc/fzf/examples/completion.zsh ]] && source /usr/share/doc/fzf/examples/completion.zsh
|
||
export FZF_DEFAULT_OPTS="--height=45% --layout=reverse --border=rounded --prompt='❯ ' --pointer='▌' --marker='✓' \
|
||
--color=bg+:#141414,fg:#c8c8c0,fg+:#f5f5f0,hl:#d3fd50,hl+:#d3fd50,pointer:#d3fd50,prompt:#d3fd50,marker:#d3fd50,info:#5d5d58,border:#2a2a28,spinner:#d3fd50,header:#8a8a85"
|
||
|
||
# coloration syntaxique (toujours en dernier)
|
||
if [[ -r /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]]; then
|
||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||
typeset -A ZSH_HIGHLIGHT_STYLES
|
||
ZSH_HIGHLIGHT_STYLES[command]='fg=#d3fd50'
|
||
ZSH_HIGHLIGHT_STYLES[alias]='fg=#d3fd50'
|
||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=#d3fd50'
|
||
ZSH_HIGHLIGHT_STYLES[function]='fg=#d3fd50'
|
||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=#d3fd50,underline'
|
||
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#ff5f5f'
|
||
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#be78ff'
|
||
ZSH_HIGHLIGHT_STYLES[path]='fg=#f5f5f0,underline'
|
||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#ffcf4a'
|
||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#ffcf4a'
|
||
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#ffcf4a'
|
||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=#8a8a85'
|
||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=#8a8a85'
|
||
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#be78ff'
|
||
ZSH_HIGHLIGHT_STYLES[redirection]='fg=#be78ff'
|
||
ZSH_HIGHLIGHT_STYLES[comment]='fg=#5d5d58'
|
||
ZSH_HIGHLIGHT_STYLES[globbing]='fg=#7cc8ff'
|
||
fi
|
||
|
||
# historique filtré par ce qui est déjà tapé : flèches haut / bas
|
||
if [[ -r /home/yass/.zplug/repos/zsh-users/zsh-history-substring-search/zsh-history-substring-search.zsh ]]; then
|
||
source /home/yass/.zplug/repos/zsh-users/zsh-history-substring-search/zsh-history-substring-search.zsh
|
||
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='fg=#0a0a0a,bg=#d3fd50'
|
||
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='fg=#0a0a0a,bg=#ff5f5f'
|
||
bindkey '^[[A' history-substring-search-up; bindkey '^[OA' history-substring-search-up
|
||
bindkey '^[[B' history-substring-search-down; bindkey '^[OB' history-substring-search-down
|
||
fi
|
||
|
||
# ── Accueil : à l'ouverture d'une session (SSH ou premier shell), pas dans les sous-shells ──
|
||
source /home/yass/.config/servyass/banner.zsh
|
||
if [[ -o interactive && $SHLVL -le 1 && -z $VSCODE_INJECTION && -z $TMUX ]]; then
|
||
servyass_banner
|
||
fi
|