Shell sous stéroïdes : ZSH + OhMyZsh + Powerlevel10k
En tant qu’utilisateur de GNU/Linux/Unix nous interargissons des dizaines, des centaines voir des milliers de fois chaque jour avec notre shell.
Qu’est ce que le Shell
C’est le programme qui sert d’interface entre l’utilisateur et le système d’exploitation.
C’est un interpréteur de commande.
La majorité des distributions GNU/Linux sont livrées avec le shell BASH par défaut.
Ils en existent d’autres :
SH
DASH
CSH
TCSH
KSH
Fish
ZSH
C’est sur ce dernier que je vais m’attarder, le ZSH.
Zorn Shell
Voici quelques avantages offert par le ZSH :
100% rétrocompatible avec le BASH.
Autocompletion des commandes, de leurs options, des dossiers et fichiers.
Correction ortographique des commandes.
Historique partagé entre les différentes consoles.
Le ZSH réunit le meilleur des fonctions offertent par les autres shells.
Le gain de temps est sensible dès les premières minutes d’utilisation mais ne vous y trompez pas il faudra du temps pour “maîtriser” toutes ses subtilités.
Pour ne rien gâcher à la fête, il bénéficie d’énormement de ressources complémentaires (thèmes, plugins, framework) pour lui ajouter tout un tas de fonctions.
Cela permet de vite et simplement personnaliser son shell pour qu’il corresponde à ce que l’on souhaite.
De Bash à ZSH
Installons les outils nécessaires :
Pour connaître les shells disponible sur votre machine exécutez cat /etc/shells depuis votre terminal qui vous retournera une sortie similaire :
Changeons le shell de l’utilisateur désiré :
On quitte et on relance notre terminal qui affichera :
Appuyer sur “0” afin de quitter l’invite tout en créant le fichier .zshrc.
Ce fichier contiendra la configuration qui s’appliquera à votre ZSH.
OhMyZsh
Plusieurs framework existent pour ZSH :
Zgen
Zim
Zplugin
Prezto
OhMyZsh
C’est sur OhMyZsh qui est certainement le plus réputé de tous que j’ai porté mon choix, après plusieurs années d’utilisation il ne m’a pas déçu.
Il est stable, bien suivi (plus de 1300 contributeurs) et offre une documentation claire et concise.
OhMyZsh offre dès son installation un accès à des centaines de plugins et de thèmes.
Pour ceux qui auraient peur pour le maintien du projet dans le temps, sachez qu’il a soufflé ses 10 bougies le 28/08/2019 et qu’il n’est pas prêt de s’arrêter en si bon chemin.
Fonts
Avant d’aller plus loin il faut savoir que plusieurs thèmes utilisent des icônes pour agrémenter le visuel, par exemple affichage de l’icône git lorsqu’on se trouve dans un repo github/gitlab ou l’icône de la batterie sur un laptop, le wifi etc… Tout cela est configurable.
Mais pour en profiter il faut installer une police (font) de caractère supportant ces icônes sinon vous aurez un affichage de caractère très étrange.
Vous avez un large choix de police compatible sur nerdfonts.
C’est totalement libre donc faites vous plaisir et n’hésitez pas à partager le projet nerdfonts à vos amis & collègues.
De mon côté j’ai choisi la police “Hack” de chez NF et c’est donc sur elle que je vais baser mon installation libre à vous d’adapter à vos envies.
Rendez vous dans les réglages de votre terminal favori pour modifier la police par défaut par celle qu’on vient d’installer.
Installation OhMyZsh
On installe OhMyZsh et 3 plugins qui rendent l’expérience plus agréable :
Si vous n’avez pas encore effectué le changement de votre shell pour zsh l’installateur de OhMyZsh le ferra pour vous et il déploiera une configuration de base dans votre fichier ~/.zshrc.
Relancer votre terminal pour profiter du résultat, par défaut c’est le thème robbyrussel qui est utilisé.
Pour la liste complète des thèmes inclus dans OMZ faite ls -l $HOME/.oh-my-zsh/themes/ depuis votre terminal.
Configuration ZSH
Avant de pousser plus loin la personnalisation je vous partage une configuration simple mais fonctionnelle où j’ai changé le thème pour agnoster qui est plus visuel et j’ai activé les plugins téléchargés plus haut cela nous servira de base pour la suite.
Pour prendre en compte les modifications on saisit source ~/.zshrc.
Il est beaucoup plus rapide au rendu comme l’explique et le démontre le site du projet.
Il offre un configurateur qui fait déjà très bien les choses pour moduler l’apparence à son goût.
Il déploie un fichier de configuration sous .p10k.zsh qui regroupe l’entierté des fonctions de P9K avec beaucoup de détail et explication.
Installation de P10K :
Il faut maintenant éditer le fichier ~/.zshrc pour activer le thème powerlevel10.
Modifier la ligne ZSH_THEME="agnoster" par ZSH_THEME="powerlevel10k/powerlevel10k".
Et on recharge notre fichier source ~/.zshrc ce qui va lancer le configurateur de P10K.
Une série de questions vous permettent de configurer votre terminal en fonction de vos envies.
Sachez que si la configuration finale ne vous convient pas vous pouvez recommencer autant de fois que vous le désirez en entrant p10k configure.
Configuration
Pour avoir l’affichage de la ram, charge cpu, heure, etc… comme expliqué plus haut il faut éditer le fichier ~/.p10k.zsh avec votre éditeur favori.
En fonction que vous souhaitiez afficher les informations à gauche/droite cela se passe dans 2 segments différents :
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS : Pour les éléments à afficher sur votre droite.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS : Pour les éléments à afficher sur votre gauche.
Voici les blocs de configuration que j’ai modifié :
Il y a une petite astuce si le context (affichage du pseudo@nomdemachine) sur votre installation locale ne s’affiche pas.
C’est parce qu’à la ligne 491 il y a cette option = #typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= qui ne permet son affichage que via ssh où en utilisant sudo.
Il suffit de la commenter et de recharger votre fichier ~/.zshrc pour que le context soit désormais visible.
Petit rendu sur la vm de test de ce tutoriel :
Vous pouvez librement mettre un élement du segment gauche à droite ou inversément, les options sont interchangeables.
Mot de la fin
Je n’ai pas écrit cet article pour couvrir l’entierté des fonctions de ZSH + OMZ + P10K ce serait impossible.
Le but de cet article était de simplifier son accès à toutes et tous.
Je ne serais que trop vous conseiller de prendre le temps de découvrir les fonctions avancées qu’offre ce trio afin de vous approprier le tout et de le moduler à votre bon vouloir.
Bien configuré il peut faire gagner un temps considérable !
A titre indicatif sur mes machines j’utilise les options suivantes des éléments de P10K :
todo
timewarrior
nordvpn
aws
azure
pyenv
goenv
nodeenv
kubecontext
Et les plugins dans mon ~/.zshrc :
Je vous remercie de m’avoir lu, j’espère que cela sera utile pour certains d’entre vous et je vous souhaite de vous éclater en “tweak” sur votre shell !
Comments
Write a comment ...