Shell sous stéroïdes : ZSH + OhMyZsh + Powerlevel10k — Wanalike Blog
· 3 min de lecture · par Wanalike
25 mars 2022 — par KoS_
En tant qu’utilisateur de GNU/Linux/Unix, nous interagissons des dizaines, voire des centaines de fois chaque jour avec notre shell.
Le shell est le programme qui sert d’interface entre l’utilisateur et le système d’exploitation. C’est un interpréteur de commandes.
La majorité des distributions GNU/Linux sont livrées avec Bash par défaut. Mais il en existe d’autres :
C’est sur ce dernier que nous allons nous attarder : ZSH (Zorn Shell).
Quelques avantages offerts par ZSH :
ZSH réunit le meilleur des fonctions offertes par les autres shells. Le gain de temps est sensible dès les premières minutes d’utilisation, même s’il faudra un peu de temps pour en maîtriser toutes les subtilités.
Il bénéficie aussi d’énormément de ressources complémentaires (thèmes, plugins, frameworks) pour lui ajouter tout un tas de fonctions et personnaliser rapidement son environnement.
Installons les outils nécessaires :
# Debian / Ubuntu / Linux Mint
sudo apt install -y zsh git curl wget
# CentOS / RHEL / Fedora
sudo dnf install -y zsh git curl wget
# Arch / Manjaro
sudo pacman -Sy zsh git curl wget
# openSUSE
sudo zypper install -y zsh git curl wget
Lister les shells disponibles :
cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh
Changer le shell par défaut de l’utilisateur :
sudo chsh -s /usr/bin/zsh nom_utilisateur
Relancez le terminal. Appuyez sur 0 à la première invite pour créer le fichier ~/.zshrc. Ce fichier contiendra la configuration de votre ZSH.
Plusieurs frameworks existent pour ZSH :
Mon choix s’est porté sur OhMyZsh, réputé, stable (1000+ contributeurs) et bien documenté. Il donne accès à des centaines de plugins et thèmes.
Certains thèmes affichent des icônes (Git, batterie, Wi-Fi, etc.). Il faut donc une police compatible, par exemple Hack Nerd Font :
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.0.0/Hack.zip -O ~/hack.zip
unzip ~/hack.zip -d ~/hack && rm ~/hack.zip
find ~/hack/ -iname "*Windows*" -exec rm {} \; # supprime les variantes Windows
sudo mv hack /usr/share/fonts/
fc-cache -v
fc-list | grep -i 'hack'
Dans votre terminal, sélectionnez la police fraîchement installée.
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-completions \
${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
Si vous n’avez pas encore basculé sur ZSH, l’installateur le fera et déploiera une config de base dans ~/.zshrc. Par défaut, le thème robbyrussell est utilisé.
Une configuration simple et fonctionnelle, avec le thème agnoster et les plugins installés plus haut :
# Path to your oh-my-zsh installation
export ZSH="$HOME/.oh-my-zsh"
# Theme
ZSH_THEME="agnoster"
# Quality of life
CASE_SENSITIVE="off"
HYPHEN_INSENSITIVE="true"
DISABLE_AUTO_UPDATE="off"
DISABLE_UPDATE_PROMPT="off"
export UPDATE_ZSH_DAYS=30
ENABLE_CORRECTION="true"
COMPLETION_WAITING_DOTS="true"
HIST_STAMPS="dd.mm.yyyy"
# Plugins
plugins=(
zsh-autosuggestions
zsh-completions
zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
Rechargez la config :
source ~/.zshrc
Powerlevel10k (P10K) est une ré-implémentation très rapide de Powerlevel9k. Avantages :
.p10k.zsh riche et documentégit clone https://github.com/romkatv/powerlevel10k.git \
$ZSH_CUSTOM/themes/powerlevel10k
Activez-le dans ~/.zshrc :
ZSH_THEME="powerlevel10k/powerlevel10k"
Rechargez :
source ~/.zshrc
Le configurateur se lance automatiquement. Vous pouvez le relancer avec :
p10k configure
typeset -ga POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
os_icon
context
dir
vcs
prompt_char
)
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
status
command_execution_time
background_jobs
load
disk_usage
ram
swap
time
)
💡 Astuce : si context (user@hostname) ne s’affiche pas en local, dans ~/.p10k.zsh commentez la ligne suivante puis rechargez :
# typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
Je n’ai pas écrit cet article pour couvrir l’intégralité de ZSH + OhMyZsh + Powerlevel10k. Le but est de faciliter l’accès à ce trio et de vous donner une base solide pour personnaliser votre environnement de terminal.
Bien configuré, il peut faire gagner beaucoup de temps et rendre l’expérience en ligne de commande bien plus agréable.
Je vous remercie de m’avoir lu — j’espère que cet article sera utile à certains d’entre vous et qu’il vous donnera envie de tweaker votre shell jusqu’à en faire un vrai cockpit de productivité.
Bon hack à tous ! 🖥️⚡