From abcc7e16cbeb0cfeab0981d0dfe79ec6356146d4 Mon Sep 17 00:00:00 2001 From: Olivier DOSSMANN Date: Sun, 24 Nov 2024 00:52:10 +0100 Subject: [PATCH] chore(ZSH): Let Oh-my-zsh. Use antidote instead + custom .zshrc --- .zshrc => .config/zsh/.old-zshrc | 78 ---------- .p10k.zsh => .config/zsh/.p10k.zsh | 0 .zprofile => .config/zsh/.zprofile | 0 .config/zsh/.zshrc | 36 +++++ .config/zsh/.zshrc.d/aliases.zsh | 237 +++++++++++++++++++++++++++++ .config/zsh/.zshrc.d/ssh-agent.zsh | 26 ++++ .zshenv | 39 ++++- 7 files changed, 334 insertions(+), 82 deletions(-) rename .zshrc => .config/zsh/.old-zshrc (60%) rename .p10k.zsh => .config/zsh/.p10k.zsh (100%) rename .zprofile => .config/zsh/.zprofile (100%) create mode 100644 .config/zsh/.zshrc create mode 100644 .config/zsh/.zshrc.d/aliases.zsh create mode 100644 .config/zsh/.zshrc.d/ssh-agent.zsh diff --git a/.zshrc b/.config/zsh/.old-zshrc similarity index 60% rename from .zshrc rename to .config/zsh/.old-zshrc index 528440c..ac9fecb 100644 --- a/.zshrc +++ b/.config/zsh/.old-zshrc @@ -77,31 +77,6 @@ POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 POWERLEVEL9K_SHORTEN_DELIMITER="" POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right" -# User configuration -export PAGER=most -export BROWSER=elinks -export SSH_ASKPASS=qt4-ssh-askpass -export AUTEUR="Olivier DOSSMANN" -export DEFAULT_USER="od" -export PYTHONWARNINGS="ignore::DeprecationWarning" -#export FLASK_SKIP_DOTENV=1 ## make problems with poetry and flask applications -export PIPENV_QUIET=1 # enlève les courtesy notice -export ENABLE_WARNINGS=false # enlève les warnings dans le setup RERO-ils -export KUBECONFIG=$HOME/kubeconfig - -# You may need to manually set your language environment -export LANG=fr_FR.UTF-8 - -# Preferred editor for local and remote sessions -if [[ -n $SSH_CONNECTION ]]; then - export EDITOR='vim' -else - export EDITOR='nvim' -fi - -# Enlève le prompt de droite après avoir appuyé sur Entrée -setopt transient_rprompt - # Compilation flags # export ARCHFLAGS="-arch x86_64" @@ -113,63 +88,10 @@ setopt transient_rprompt # Example aliases # alias zshconfig="mate ~/.zshrc" # alias ohmyzsh="mate ~/.oh-my-zsh" -alias e="${EDITOR}" -alias r="${EDITOR} -R" -alias sm="sublime_merge" -alias vi="${EDITOR}" -alias mem='free -mt' -alias df='df -hT' -alias ls='exa' -alias ll='exa -l' -alias l='exa -F' -alias rgrep='rg --no-ignore' -export GREP_COLORS='ms=01;33:mc=01;33:s1=:cx=:fn=37;ln=32:bn=32:se=36' -alias diff='colordiff' -alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' -# évite de faire des erreurs -alias rm='rm -i' -alias cp='cp -i' -alias grep='grep --color' -# requêtes -alias https='http --verify=no --default-scheme=https' -# pytest -alias pyt='poetry run pytest -vvs --no-cov --disable-warnings' -alias pytc='poetry run pytest -vvs --disable-warnings --cov-report=xml:cov.xml' -# projet rero -alias rero="ALIAS=rero /home/od/projets/rerologik/agnes" -# coloration de la commande IP -alias ip='ip -c' -alias k='kubectl' -alias devu="${HOME}/devu/devu/devu" # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh -# Connexion automatique -mkdir -p "${HOME}/etc/ssh"; -function ssh-procure-launch-agent { - eval `ssh-agent -s -a ~/etc/ssh/ssh-agent-socket`; - ssh-add; -} - -if [ ! $SSH_AGENT_PID ]; then - if [ -e ~/etc/ssh/ssh-agent-socket ] ; then - SSH_AGENT_PID=`ps -fC ssh-agent |grep 'etc/ssh/ssh-agent-socket' |sed -r 's/^\S+\s+(\S+).*$/\1/'`; - if [[ $SSH_AGENT_PID =~ [0-9]+ ]]; then - # in this case the agent has already been launched and we are just attaching to it. - ##++ It should check that this pid is actually active & belongs to an ssh instance - export SSH_AGENT_PID; - SSH_AUTH_SOCK=~/etc/ssh/ssh-agent-socket; export SSH_AUTH_SOCK; - else - # in this case there is no agent running, so the socket file is left over from a graceless agent termination. - rm ~/etc/ssh/ssh-agent-socket; - ssh-procure-launch-agent; - fi; - else - ssh-procure-launch-agent; - fi; -fi; - # Desktop specificities for development case $HOST in lueur | baloo | sam) diff --git a/.p10k.zsh b/.config/zsh/.p10k.zsh similarity index 100% rename from .p10k.zsh rename to .config/zsh/.p10k.zsh diff --git a/.zprofile b/.config/zsh/.zprofile similarity index 100% rename from .zprofile rename to .config/zsh/.zprofile diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc new file mode 100644 index 0000000..d04b903 --- /dev/null +++ b/.config/zsh/.zshrc @@ -0,0 +1,36 @@ +#!/usr/bin/env zsh + +# Enable Powerlevel10k instant prompt. Should stay close to the top of .zshrc. +# Initialization code that may require console input (password prompts, [y/n] +# confirmations, etc.) must go above this block; everything else may go below. +if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then + source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +fi + +# Load fzf +source /usr/share/fzf/completion.zsh +source /usr/share/fzf/key-bindings.zsh + +# Clone antidote if necessary. +if [[ ! -d ${ZDOTDIR:-$HOME}/.antidote ]]; then + git clone https://github.com/mattmc3/antidote ${ZDOTDIR:-$HOME}/.antidote +fi + +# Create an amazing Zsh config using antidote plugins. +source ${ZDOTDIR:-$HOME}/.antidote/antidote.zsh +antidote load + +# Enlève le prompt de droite après avoir appuyé sur Entrée +setopt transient_rprompt + +# Source anything in .zshrc.d. +for _rc in ${ZDOTDIR:-$HOME}/.zshrc.d/*.zsh; do + # Ignore tilde files. + if [[ $_rc:t != '~'* ]]; then + source "$_rc" + fi +done +unset _rc + +# To customize prompt, run `p10k configure` or edit .p10k.zsh. +[[ ! -f ${ZDOTDIR:-$HOME}/.p10k.zsh ]] || source ${ZDOTDIR:-$HOME}/.p10k.zsh diff --git a/.config/zsh/.zshrc.d/aliases.zsh b/.config/zsh/.zshrc.d/aliases.zsh new file mode 100644 index 0000000..0576282 --- /dev/null +++ b/.config/zsh/.zshrc.d/aliases.zsh @@ -0,0 +1,237 @@ +#!/usr/bin/env zsh + +# editor +alias e="${EDITOR}" +alias r="${EDITOR} -R" +alias sm="sublime_merge" +alias vi="${EDITOR}" + +# system +alias mem='free -mt' +alias df='df -hT' + +# navigation +alias ls='eza' +alias ll='eza -lah --group --smart-group --icons' +alias l='eza -F' + +# web +alias https='http --verify=no --default-scheme=https' + +# search +alias rgrep='rg --no-ignore' + +# add colors to some commands +alias diff='colordiff' +export GREP_COLORS='ms=01;33:mc=01;33:s1=:cx=:fn=37;ln=32:bn=32:se=36' +alias grep='grep --color' +alias ip='ip -c' + +# dotfiles +alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' + +# be careful! +alias rm='rm -i' +alias cp='cp -i' +alias mv='mv -i' + +# pytest +alias pyt='poetry run pytest -vvs --no-cov --disable-warnings' +alias pytc='poetry run pytest -vvs --disable-warnings --cov-report=xml:cov.xml' + +# k8s +alias k='kubectl' + +# miscellaneous +alias devu="${HOME}/devu/devu/devu" + +# git +alias ga='git add' +alias gaa='git add --all' +alias gam='git am' +alias gama='git am --abort' +alias gamc='git am --continue' +alias gams='git am --skip' +alias gamscp='git am --show-current-patch' +alias gap='git apply' +alias gapa='git add --patch' +alias gapt='git apply --3way' +alias gau='git add --update' +alias gav='git add --verbose' +alias gb='git branch' +alias gbD='git branch --delete --force' +alias gba='git branch --all' +alias gbd='git branch --delete' +alias gbl='git blame -w' +alias gbm='git branch --move' +alias gbnm='git branch --no-merged' +alias gbr='git branch --remote' +alias gbs='git bisect' +alias gbsb='git bisect bad' +alias gbsg='git bisect good' +alias gbsn='git bisect new' +alias gbso='git bisect old' +alias gbsr='git bisect reset' +alias gbss='git bisect start' +alias gc='git commit --verbose' +alias 'gc!'='git commit --verbose --amend' +alias gcB='git checkout -B' +alias gca='git commit --verbose --all' +alias 'gca!'='git commit --verbose --all --amend' +alias gcam='git commit --all --message' +alias 'gcan!'='git commit --verbose --all --no-edit --amend' +alias 'gcann!'='git commit --verbose --all --date=now --no-edit --amend' +alias 'gcans!'='git commit --verbose --all --signoff --no-edit --amend' +alias gcas='git commit --all --signoff' +alias gcasm='git commit --all --signoff --message' +alias gcb='git checkout -b' +alias gcd='git checkout $(git_develop_branch)' +alias gcf='git config --list' +alias gcl='git clone --recurse-submodules' +alias gclean='git clean --interactive -d' +alias gclf='git clone --recursive --shallow-submodules --filter=blob:none --also-filter-submodules' +alias gcm='git checkout $(git_main_branch)' +alias gcmsg='git commit --message' +alias gcn='git commit --verbose --no-edit' +alias 'gcn!'='git commit --verbose --no-edit --amend' +alias gco='git checkout' +alias gcor='git checkout --recurse-submodules' +alias gcount='git shortlog --summary --numbered' +alias gcp='git cherry-pick' +alias gcpa='git cherry-pick --abort' +alias gcpc='git cherry-pick --continue' +alias gcs='git commit --gpg-sign' +alias gcsm='git commit --signoff --message' +alias gcss='git commit --gpg-sign --signoff' +alias gcssm='git commit --gpg-sign --signoff --message' +alias gd='git diff' +alias gdca='git diff --cached' +alias gdct='git describe --tags $(git rev-list --tags --max-count=1)' +alias gdcw='git diff --cached --word-diff' +alias gds='git diff --staged' +alias gdt='git diff-tree --no-commit-id --name-only -r' +alias gdup='git diff @{upstream}' +alias gdw='git diff --word-diff' +alias gf='git fetch' +alias gfa='git fetch --all --tags --prune --jobs=10' +alias gfg='git ls-files | grep' +alias gfo='git fetch origin' +alias gg='git gui citool' +alias gga='git gui citool --amend' +alias ggpull='git pull origin "$(git_current_branch)"' +alias ggpush='git push origin "$(git_current_branch)"' +alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' +alias ghh='git help' +alias gignore='git update-index --assume-unchanged' +alias gignored='git ls-files -v | grep "^[[:lower:]]"' +alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' +alias gl='git pull' +alias glg='git log --stat' +alias glgg='git log --graph' +alias glgga='git log --graph --decorate --all' +alias glgm='git log --graph --max-count=10' +alias glgp='git log --stat --patch' +alias glo='git log --oneline --decorate' +alias glod='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset"' +alias glods='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset" --date=short' +alias glog='git log --oneline --decorate --graph' +alias gloga='git log --oneline --decorate --graph --all' +alias glol='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset"' +alias glola='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --all' +alias glols='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --stat' +alias gluc='git pull upstream $(git_current_branch)' +alias glum='git pull upstream $(git_main_branch)' +alias gm='git merge' +alias gma='git merge --abort' +alias gmc='git merge --continue' +alias gmff='git merge --ff-only' +alias gmom='git merge origin/$(git_main_branch)' +alias gms='git merge --squash' +alias gmtl='git mergetool --no-prompt' +alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' +alias gmum='git merge upstream/$(git_main_branch)' +alias gp='git push' +alias gpd='git push --dry-run' +alias gpf='git push --force-with-lease --force-if-includes' +alias 'gpf!'='git push --force' +alias gpoat='git push origin --all && git push origin --tags' +alias gpod='git push origin --delete' +alias gpr='git pull --rebase' +alias gpra='git pull --rebase --autostash' +alias gprav='git pull --rebase --autostash -v' +alias gpristine='git reset --hard && git clean --force -dfx' +alias gprom='git pull --rebase origin $(git_main_branch)' +alias gpromi='git pull --rebase=interactive origin $(git_main_branch)' +alias gprum='git pull --rebase upstream $(git_main_branch)' +alias gprumi='git pull --rebase=interactive upstream $(git_main_branch)' +alias gprv='git pull --rebase -v' +alias gpsup='git push --set-upstream origin $(git_current_branch)' +alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes' +alias gpu='git push upstream' +alias gpv='git push --verbose' +alias gr='git remote' +alias gra='git remote add' +alias grb='git rebase' +alias grba='git rebase --abort' +alias grbc='git rebase --continue' +alias grbd='git rebase $(git_develop_branch)' +alias grbi='git rebase --interactive' +alias grbm='git rebase $(git_main_branch)' +alias grbo='git rebase --onto' +alias grbom='git rebase origin/$(git_main_branch)' +alias grbs='git rebase --skip' +alias grbum='git rebase upstream/$(git_main_branch)' +alias grev='git revert' +alias greva='git revert --abort' +alias grevc='git revert --continue' +alias grf='git reflog' +alias grh='git reset' +alias grhh='git reset --hard' +alias grhk='git reset --keep' +alias grhs='git reset --soft' +alias grm='git rm' +alias grmc='git rm --cached' +alias grmv='git remote rename' +alias groh='git reset origin/$(git_current_branch) --hard' +alias grrm='git remote remove' +alias grs='git restore' +alias grset='git remote set-url' +alias grss='git restore --source' +alias grst='git restore --staged' +alias gru='git reset --' +alias grup='git remote update' +alias grv='git remote --verbose' +alias gsb='git status --short --branch' +alias gsd='git svn dcommit' +alias gsh='git show' +alias gsi='git submodule init' +alias gsps='git show --pretty=short --show-signature' +alias gsr='git svn rebase' +alias gss='git status --short' +alias gst='git status' +alias gsta='git stash push' +alias gstaa='git stash apply' +alias gstall='git stash --all' +alias gstc='git stash clear' +alias gstd='git stash drop' +alias gstl='git stash list' +alias gstp='git stash pop' +alias gsts='git stash show --patch' +alias gsu='git submodule update' +alias gsw='git switch' +alias gswc='git switch --create' +alias gswd='git switch $(git_develop_branch)' +alias gswm='git switch $(git_main_branch)' +alias gta='git tag --annotate' +alias gts='git tag --sign' +alias gtv='git tag | sort -V' +alias gunignore='git update-index --no-assume-unchanged' +alias gunwip='git rev-list --max-count=1 --format="%s" HEAD | grep -q "\--wip--" && git reset HEAD~1' +alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' +alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"' +alias gwipe='git reset --hard && git clean --force -df' +alias gwt='git worktree' +alias gwta='git worktree add' +alias gwtls='git worktree list' +alias gwtmv='git worktree move' +alias gwtrm='git worktree remove' diff --git a/.config/zsh/.zshrc.d/ssh-agent.zsh b/.config/zsh/.zshrc.d/ssh-agent.zsh new file mode 100644 index 0000000..9436fbc --- /dev/null +++ b/.config/zsh/.zshrc.d/ssh-agent.zsh @@ -0,0 +1,26 @@ +#!/usr/bin/env zsh + +# Automatic connection +mkdir -p "${HOME}/etc/ssh"; +function ssh-procure-launch-agent { + eval `ssh-agent -s -a ~/etc/ssh/ssh-agent-socket`; + ssh-add; +} + +if [ ! $SSH_AGENT_PID ]; then + if [ -e ~/etc/ssh/ssh-agent-socket ] ; then + SSH_AGENT_PID=`ps -fC ssh-agent |grep 'etc/ssh/ssh-agent-socket' |sed -r 's/^\S+\s+(\S+).*$/\1/'`; + if [[ $SSH_AGENT_PID =~ [0-9]+ ]]; then + # in this case the agent has already been launched and we are just attaching to it. + ##++ It should check that this pid is actually active & belongs to an ssh instance + export SSH_AGENT_PID; + SSH_AUTH_SOCK=~/etc/ssh/ssh-agent-socket; export SSH_AUTH_SOCK; + else + # in this case there is no agent running, so the socket file is left over from a graceless agent termination. + rm ~/etc/ssh/ssh-agent-socket; + ssh-procure-launch-agent; + fi; + else + ssh-procure-launch-agent; + fi; +fi; diff --git a/.zshenv b/.zshenv index 9b56f04..a79d810 100644 --- a/.zshenv +++ b/.zshenv @@ -1,8 +1,39 @@ +#!/usr/bin/env zsh +# +# ENVIRONMENT VARIABLES ONLY + +# Cf. https://wiki.archlinux.org/title/XDG_Base_Directory +export XDG_CONFIG_HOME=$HOME/.config + +# Default editor +export EDITOR='nvim' + +# ZSH +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" +export HISTFILE="$ZDOTDIR/.zhistory" # History filepath +export HISTSIZE=10000 # Maximum events for internal history +export SAVEHIST=10000 # Maximum events in history file + +# PATH typeset -U PATH path path=("$HOME/.local/bin" "$HOME/bin" "/opt/sublime_merge" "$path[@]", "$(go env GOPATH)/bin") export PATH -# Autocomplètement supplémentaire (Docker) -if [ -d "$HOME/.zsh/completion" ] ; then - fpath=(~/.zsh/completion $fpath) -fi +# Language environment +export LANG=fr_FR.UTF-8 + +# Reading / Browse (manpages, websites, etc.) +export PAGER=most +export BROWSER=elinks + +# SSH +export SSH_ASKPASS=qt4-ssh-askpass + +# Python +export PYTHONWARNINGS="ignore::DeprecationWarning" +#export FLASK_SKIP_DOTENV=1 ## make problems with poetry and flask applications +export PIPENV_QUIET=1 # enlève les courtesy notice + +# k8s +export KUBECONFIG=$HOME/kubeconfig +