volted.net

A blog about openSUSE and free thoughts

Un prompt zsh au poil

December 02, 2018 — sogal

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 : zsh-01

Dans un dépôt Git : zsh-02

Si la commande précédente a renvoyé un code d'erreur : zsh-03

Lorsqu'une chanson est en cours de lecture (via mpd) : zsh-04

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