Un prompt zsh au poil
Comme beaucoup d'entre nous, j'utilise beaucoup le terminal et je suis toujours intéressé par de nouvelle astuces à ce sujet. J'ai récemment testé puis adopté powerline Néanmoins je trouve ce dernier un peu lourd. Il dispose de plein de fonctionnalités (des segments) et est visuellement très chouette mais ralenti un peu l'utilisation et le lancement du shell (et donc l'ouverture de nouveaux émulateurs de terminal).
J'ai donc décidé de voir si je ne pouvais pas obtenir facilement la même chose simplement en configurant zsh comme il faut via mon .zshrc
.
J'ai donc fait mumuse, lu de la doc et searcher le fucking web et voici ce que ça donne :
Mode normal :
Dans un dépôt Git :
Si la commande précédente a renvoyé un code d'erreur :
Lorsqu'une chanson est en cours de lecture (via mpd) :
Et voici la partie correspondante de mon .zshrc :
#---------- DEFINITION DES FONCTIONS ----------
# Récupérer la charge système :
function load () {
read one five fifteen rest </proc/loadavg
load="$one $five $fifteen"
print $load
}
# Récupérer la branche git si c'est un dépôt :
function izitgit () {
if [[ -d .git ]] ; then
gitb="[$(git rev-parse --abbrev-ref HEAD)]"
if [[ $? -ne 0 ]] || [[ -z "$gitb" ]] ; then
return
fi
else
gitb=""
fi
print $gitb
}
# Récupérer la chanson en cours :
function mpd () {
if [[ $(mpc current) == "" ]] ; then
song=""
else
song="[$(mpc current)]"
print $song
fi
}
#---------- CONSTRUCTION DU PROMPT ----------
# ...principal
PROMPT="[%F{magenta}%n%f (%F{green}%m%f): %F{yellow}%~ %f]%F{magenta}> %f"
# ...à droite
RPROMPT='[%F{red}$(load)%f][%B%F{cyan}%*%f%b]$(izitgit)%F{yellow}$(mpd)%f%(?..%B%K{red}[-%?-]%b%k)'
# Indispensable pour assurer l'extension des résultats des commandes :
setopt prompt_subst
autoload -U promptinit
promptinit
J'espère que ça pourra être utile à ceux qui veulent bidouiller leur prompt. Si vous avez des pistes d'améliorations ou des astuces pour votre bash ou votre zsh à partager, n'hésitez pas ! Postez !
Have fun and enjoy !
tags: terminal, tips