# **************************************************************************** # # # # ::: :::::::: # # .zshrc :+: :+: :+: # # +:+ +:+ +:+ # # By: abosc +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2026/06/15 16:19:14 by abosc #+# #+# # # Updated: 2026/06/15 16:19:14 by abosc ### ########.fr # # # # **************************************************************************** # # ============================================================================== # 1. CONFIGURATION D'OH-MY-ZSH # ============================================================================== export ZSH="$HOME/.oh-my-zsh" ZSH_THEME="agnosterzak" plugins=( git archlinux zsh-autosuggestions zsh-syntax-highlighting sudo copypath ) source $ZSH/oh-my-zsh.sh # ============================================================================== # 2. OPTIONS DE CONFIGURATION DE BASE # ============================================================================== # --- Gestion de l'historique --- HISTFILE=~/.zsh_history HISTSIZE=10000 SAVEHIST=10000 setopt SHARE_HISTORY # Partage l'historique entre toutes les sessions ouvertes setopt HIST_IGNORE_DUPS # Ne pas enregistrer une commande si c'est la même que la précédente setopt HIST_IGNORE_ALL_DUPS # Supprime les lignes répétées de l'historique setopt HIST_REDUCE_BLANKS # Retire les espaces inutiles des commandes avant de les stocker setopt HIST_IGNORE_SPACE # Ne pas enregistrer les commandes commençant par un espace # --- Complétion --- zstyle ':completion:*' menu select # Améliore la complétion (plus visuelle) # ============================================================================== # 3. COMPOSANTS EXTERNES & UTILITAIRES (Fastfetch, FZF, Zoxide) # ============================================================================== # Affichage des infos système au démarrage fastfetch --logo-type kitty --logo ~/.config/arch_logo.png --logo-width 30 --logo-height 14 # Raccourcis clavier FZF (CTRL+R pour l'historique flou) source <(fzf --zsh) # Navigation intelligente avec Zoxide eval "$(zoxide init zsh)" # ============================================================================== # 4. ALIAS # ============================================================================== # Remplacement de 'cd' par 'z' (Zoxide) alias cd='z' # Navigation rapide alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias pedago='cd /home/achille/Documents/work/dashboard_pedago' alias dash="cd /home/achille/Documents/work/dashboard_pedago" # Amélioration de 'ls' via lsd alias ls='lsd --hyperlink=always' alias l='ls -l' alias la='ls -a' alias lla='ls -la' alias lt='ls --tree' alias lr='ls -R' # Sécurité (Confirmations avant actions sensibles) alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Corrections de fautes de frappe courantes alias celar=clear alias cela=clear alias exot=exit alias clear='printf "\033c"' # Raccourcis Système & Outils (Arch / Yay) alias up='yay -Syu' alias zrc='source ~/.zshrc' alias vi=vim alias kq="pkill quickshell" alias yays='yay -Ss' # Chercher un paquet sur les dépôts + AUR alias yayi='yay -S' # Installer un paquet alias yayr='yay -Rns' # Désinstaller proprement (avec dépendances et configs) alias yayc='yay -Yc' # Nettoyer les dépendances orphelines # Python / Environnements virtuels alias prc='source .venv/bin/activate' alias p="prc && python3 src/main.py" alias py="prc && python3" alias convert="python3 /home/achille/Documents/work/utilities/svg_to_png.py" # Projets spécifiques & Scripts alias retry="ruby /home/achille/Documents/work/Initiation/quick-retry/main.rb" # Connexions (VPN & VM 42) alias vpn="sudo openvpn --config ~/Documents/VPN/nat-UDP4-1194-achille-config.ovpn" alias 42vm="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@PointsForProjects.42lehavre.fr" alias n8n="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@n8n.42lehavre.fr" alias cluster="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@ansiblecluster.42lehavre.fr" alias 42vmdb="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 -L 8000:localhost:8000 ansible@pointsforprojects.42lehavre.fr" alias ldap="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@ldap.42lehavre.fr" # ============================================================================== # 5. FONCTIONS CUSTOM # ============================================================================== # Extraction automatique d'archives extract() { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "'$1' ne peut pas être extrait via extract()" ;; esac else echo "'$1' n'est pas un fichier valide" fi } # Chercher un fichier et l'ouvrir directement dans Vim fo() { local file file=$(fzf --preview 'bat --style=numbers --color=always --line-range :500 {}') && vi "$file" } # Créer et activer un venv Python instantanément mkenv() { python3 -m venv .venv && source .venv/bin/activate && pip install --upgrade pip } # Créer un dossier ET entrer dedans directement # Plus besoin de faire 'mkdir super-projet' puis 'cd super-projet' mkcd() { mkdir -p "$1" && cd "$1" } # Connaître instantanément ton IP publique et locale alias myip="echo 'Interne: ' && hostname -I | awk '{print $1}' && echo 'Publique: ' && curl -s ifconfig.me && echo ''" # Générer un mot de passe aléatoire et sécurisé de 20 caractères (sans fioritures) alias genpass="openssl rand -base64 15" # Un 'grep' amélioré qui affiche les numéros de ligne et de la couleur par défaut alias grep="grep --color=auto -n" # Sauvegarde rapide : Ajoute tout, commit avec le message de ton choix, et push # Utilisation : gsave "Correction bug typo" gsave() { git add -A && git commit -m "$1" && git push } # Revenir en arrière proprement (Annuler le dernier commit mais GARDER les modifications dans ton éditeur) alias undo="git reset --soft HEAD~1" # Nettoyer les branches locales qui ont été fusionnées et supprimées sur GitHub/GitLab alias git-clean="git fetch -p && git branch -vv | awk '/: gone]/ {print \$1}' | xargs -r git branch -d" # Voir la taille des dossiers du répertoire courant triés par taille (via lsd) # Idéal pour voir ce qui prend de la place en un coup d'œil alias du-folders="lsd -lh --total-size" # Partager rapidement un fichier depuis ton terminal # Ça génère un lien de téléchargement temporaire (valide 14 jours) # Utilisation : share mon_rapport.pdf share() { curl --upload-file "$1" https://transfer.sh/$(basename "$1") && echo "" } # Redémarrer Kitty proprement sans fermer toutes tes fenêtres en cours (Reload config) alias kitty-reload="kill -SIGUSR1 $(pgrep kitty)" # ============================================================================== # 6. OVERRIDES ET FORCE-PASS (Placé à la fin pour bloquer Oh My Zsh) # ============================================================================== # Horloge à droite du terminal (Heure:Minute:Seconde) RPROMPT='%F{242}%*%f' # Force Zsh à corriger automatiquement SANS demander la confirmation [nyae] unsetopt correct setopt correct_all