ohmyzsh + tmux + powerline : un terminal pour les gouverner tous

Voilà maintenant près d’un an que ma machine de travail tourne sous Ubuntu 18.04, principalement pour la compatibilité avec les outils tel qu’Ansible ou Vagrant par exemple … Après pas mal de recherches sur les différents terminaux disponibles (hyper, terminus, kitty, terminator et j’en passe) je n’ai jamais réellement trouvé mon bonheur.

Jusqu’à ce que je tombe sur une vidéo de cocadmin sur tmux les fonctions disponibles dans ce multiplexeur me rappelle immédiatement iTerm2 que j’ai l’habitude d’utiliser sur mon Macbook. Après quelques heures de recherche et d’installation je suis passé de ça :

Ok Boomer !

à ça :

Welcome to the real world …

Alors si vous voulez vous aussi avoir un terminal sympa à regarder et surtout super utile à ouvrir tous les matins, suivez le guide.

Nous allons simplement utiliser le gnome terminal, celui installé par défaut avec votre distribution et le customiser à notre envie.

Dans un premier temps nous allons procéder à l’installation d’ohmyzsh, cette suite est un framework qui viendra s’installer en plus sur votre terminal classique.

Puis nous installerons le multiplexeur tmux qui vous permettra de scinder vos terminaux en plusieurs partie et aussi détacher ou rattacher vos différentes sessions à la manière de screen.

Enfin nous verrons aussi l’installation du plugin powerline qui vous permet de prendre en compte la « statusbar » de tmux.

Installation et configuration de ohmyzsh

Par défaut le terminal Linux lance le shell (votre interpréteur de commande) bash, nous allons le remplacer par zsh, qui bénéficie des avantages suivants :

  • Auto-complétion avancée
  • Correction orthographique des commandes saisies
  • Support avancé de Git
  • Historique partagé entre les différents Shells ouverts.

Tout d’abord il faudra faire l’installation des paquets nécessaire à l’installation :

sudo apt install git curl zsh 
zsh

Après avoir lancé ces commandes vous tomberez dans un menu de configuration de zsh, dans ce menu appuyer sur la touche Enter pour ignorer l’étape de configuration de zsh (nous y reviendrons plus tard avec l’installation du framework)

tristesse et austérité

Afin que le terminal soit un peu plus élégant nous allons supprimer le menu des options et la scrolling bar de l’affichage, pour cela aller dans Edit > Préférences et désactiver les options suivantes :

Fermez et ouvrez de nouveau votre terminal il devrait ressembler à quelque chose comme ça

Une fois les pré-requis en place nous allons maintenant rentrer dans le dur ! Dans un premier temps nous allons procéder à l’installation de ohmyzsh pour cela :

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Choisissez de faire zsh votre shell par défaut, et entrez votre mot de passe, à partir de maintenant à l’ouverture de votre terminal (CTRL + ALT + T) vous serez en shell zsh par défaut, ceci nécessite quand même une logout / login de votre session.

Oh my Zsh est livré avec une panoplie de plugins, n’hésitez pas à aller parcourir le github de tout les plugins disponibles à l’heure actuelle.

ZSH Agnoster theme

Le thème par défaut ‘robbyrussell’ de ohmyzsh est assez minimaliste nous allons le changer pour le thème ‘agnoster’, il est optimisé pour les utilisateurs des produits suivants :

  • Solarized
  • Git
  • Unicode-compatible fonts and terminals

Voici ce qu’il montrera lors de votre navigation en zsh

  • If the previous command failed (✘)
  • User @ Hostname (if user is not DEFAULT_USER, which can then be set in your profile)
  • Git status
    • Branch () or detached head (➦)
    • Current branch / SHA1 in detached head state
    • Dirty working directory (±, color change)
  • Working directory
  • Elevated (root) privileges (⚡)
Screenshot

Dans un premier temps nous allons changer les couleurs de notre terminal, pour ce faire il faudra faire un Shift + Click droit dans votre terminal et Préférences

Solarized teminal colors

Agnoster nécessite une police powerline, c’est-à-dire capable d’afficher des caractères spéciaux (chemin d’arborescence par exemple) si vous n’installer pas de police de ce genre alors votre thème se présentera ainsi :

Eeeeeerrrkkk

Pour installer les polices powerline la ligne de commande suivante est disponible :

sudo apt-get install fonts-powerline
nano ~/.zshrc

Modifier votre fichier .zshrc modifier la ligne ZSH_THEME= »agnoster », puis redémarrer simplement votre terminal, vous pourrez vous apercevoir de l’activation en visualisant votre prompt

ça ressemble déjà plus à quelque chose

Installation et configuration de tmux

Passons à l’installation de tmux qui je le rappelle est un multiplexeur, il présente donc les avantages suivants :

  • Gestion des multi-sessions de terminaux
  • Scission en plusieurs terminaux d’un seul terminal, vertical ou horizontal
  • Reprise de session détaché suite à un plantage terminal ou une rupture réseau par exemple

Pour l’installation tmux est en général disponible dans votre gestionnaire de paquets et un simple

sudo apt install tmux
tmux

Voilà votre première session tmux lancée, vous pouvez vous en rendre compte par la statusbar en bas de votre terminal qui viens d’apparaitre, elle n’est pas bien jolie pour le moment mais nous nous en occuperons dans un moment. Chose à savoir, l’ensemble des raccourcis tmux doivent être précédé le la combinaison de commandes CTRL + B. Voici une liste des raccourcis utiles :

  • , : Renommer le titre de sa session
  • c : Créer une nouvelle fenêtre dans la session tmux active
  • n : Basculer entre les différentes fenêtres de la session
  • X : Choisir une fenêtre spécifique (ou X est le numéro de la fenêtre)
  • w : Afficher la liste des fenêtres disponibles
  • t : Afficher l’heure dans une fenêtre
  • & : Supprimer la fenêtre courante
  • d : détaché la fenêtre courante

Puis pour la manipulation des Panes (panneaux disponibles dans votre fenêtre de terminal)

  • % : Scinder verticalement
  •  » : Scinder horizontalement
  • ESPACE : Changer l’affichage courant
  • o : Basculer d’un pane à l’autre
  • ; : Basculer au dernier pane utilisé
  • q : Afficher le numéro des panes durant un court instant
  • x : Supprimer le pane courant

Pour le moment tmux n’est pas lancé par défaut à l’ouverture de votre terminal pour remédier à ça il faudra modifier votre fichier ~/.zshrc et de rajouter le plugin tmux à la liste de vos plugin ainsi que al directive de démarrage automatique

ZSH_TMUX_AUTOSTART='true'
plugins=(
...
tmux
...
)

Redémarrer ensuite votre terminal et vous devriez directement vous retrouver dans votre session tmux

tmux autostart enable

Installation Powerline

Enfin afin de rendre la statusbar beaucoup plus fonctionnelle et plus jolie nous allons installer Powerline une statusline pour vim et plusieurs applications telle que zsh,bash,tmux, Awesome et d’autres … Nous allons passer par python-pip

sudo apt install python-pip
pip install powerline-status

Une fois ces commandes faite pour activer la statusline dans tmux il faudra créer le fichier ~/.tmux.conf avec le contenu suivant, en prenant soin de renommer votre utilisateur bien entendu.

###########################
### Configuration ########
###########################
# Set zsh as default sheel for tmux
set-option -g default-shell /bin/zsh
# Powerline statusbar support
source "/home/cpiveteau/.local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf"
run-shell "powerline-daemon -q"
set -g default-terminal "screen-256color"
# Enable Mouse support
set -g mouse on
view raw tmux.conf hosted with ❤ by GitHub

Même chose pour la statusbar de vim il faudra rajouter les lignes suivantes à la fin du fichier /etc/vim/vimrc

set rtp+=/home/cpiveteau/.local/lib/python2.7/site-packages/powerline/bindings/vim
set laststatus=2
set t_Co=256
view raw vimrc hosted with ❤ by GitHub

Enfin pour bash rajouter la ligne suivante à votre bashrc

. ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
view raw bashrc hosted with ❤ by GitHub

Votre super terminal est maintenant en place, il faudra une courte période d’adaptation, je vous garantis que si vous persévérez dans l’utilisation vous ne le regretterez pas. Si vous avez des difficultés à mettre tout ça en place n’hésitez pas à poster un commentaire j’essaierai de vous aider du mieux possible, vous pouvez aussi simplement me laisser un com’ ici ça fait toujours plaisir de voir qu’un billet a servi.

A+

2 réflexions sur « ohmyzsh + tmux + powerline : un terminal pour les gouverner tous »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Concevoir un site comme celui-ci avec WordPress.com
Commencer