Ubuntu : Solarized colors

L’autre jour, lisant un article, l’image d’une capture d’écran de terminal montrait des couleurs plus douces qui me plaisaient bien, j’ai donc cherché comment modifier les miennes pour y ressembler.

Puis de fil en aiguille, je suis arrivé sur cette page qui explique comment faire, mais surtout qu’il s’agit d’une palette bien définie, qui s’appelle Solarized, et créée par Ethan Schoonover.

En gros, il a créé une palette de 16 couleurs pour une utilisation dans un terminal ou dans une interface graphique (éditeur GUI), dont les contrastes fonctionnent aussi bien avec un thème clair ou un thème sombre.

Comme indiqué sur le premier lien, il s’agit de configurer le terminal pour qu’il soit moins fatiguant pour la vue (en plus d’être joli). Du coup, j’en ai profité pour modifier aussi mon prompt ! Et dans la foulée, j’ai cherché le même thème pour mes éditeurs graphiques préférés, à savoir Gedit et Geany.

Voyons voir comment j’ai fait ça…

Voyons d’abord comment configurer ce thème Solarized quand on utilise un terminal lambda. Si vous êtes comme moi sous Gnome, vous pouvez aller directement à la partie Gnome-terminal. Ou bien continuer à lire quand même pour en apprendre un peu plus sur les couleurs dans un terminal…

Terminal

Un peu de théorie d’abord. Il y a deux commandes et une variable à connaître : la commande ls qui affiche les fichiers de couleurs différentes selon leur type en se basant sur la variable d’environnement $LS_COLORS. Et la commande dircolors qui permet de générer cette variable $LS_COLORS.

Si vous regardez le contenu du fichier ~/.bashrc, qui définit votre environnement dans un terminal (si vous utilisez bash comme interpréteur bien entendu), vous verrez une commande dircolors d’exécutée quelque part. Ainsi qu’un alias pour la commande ls pour automatiser l’usage de la couleur.Voir ci-dessous les différences entre Ubuntu 19.10 et 20.04.

Nous allons donc télécharger un fichier de type texte avec les réglages couleurs pour un thème « solarized », puis le renommer en <code>.dircolors</code> dans notre « home ». Enfin la commande eval applique ce nouveau fichier à la commande dircolors, ce qui va donc générer de nouvelles valeurs pour $LS_COLORS qui seront utilisées par la commande <code>ls</code>.

wget --no-check-certificate https://raw.github.com/seebi/dircolors-solarized/master/dircolors.ansi-dark
mv dircolors.ansi-dark ~/.dircolors
eval `dircolors ~/.dircolors`

Voilà, il n’y a normalement rien d’autre à faire, puisque le fichier .bashrc va tester si un fichier .dircolors est présent dans votre home, et l’appliquer si c’est le cas. À vérifier toutefois dans le ~/.bashrc, car sur mon Ubuntu 19.10, ce test n’est pas fait, alors qu’avec Ubuntu 20.04 (qui sort bientôt), le test est bien fait :

# Avec Ubuntu 19.10 :
if [ -x /usr/bin/dircolors ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=auto'
# Avec Ubuntu 20.04 :
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dirco
lors -b)
    alias ls='ls --color=auto'

Si ce n’est pas le cas, il suffit d’ajouter la commande eval "`dircolors ~/.dircolors`" » au script ~/.bashrc.

Gnome-terminal

Si vous êtes avec l’environnement Gnome (celui d’Ubuntu par défaut maintenant), on va procéder différemment. En plus, d’après ce que j’ai pu voir, les couleurs sont légèrement différentes de la première solution, et plus belles !

Nous allons pour ce faire récupérer un autre dépôt sur Github, puis exécuter un script de configuration :

git clone https://github.com/sigurdga/gnome-terminal-colors-solarized.git
cd gnome-terminal-colors-solarized
./set_dark.sh

Valider le choix 2 [DEFAULT], et les couleurs Solarized seront immédiatement appliquées au Terminal. Le script utilise dconf l’éditeur de configuration de Gnome pour aller modifier et définir ces couleurs.

Et voilà, vous pouvez désormais profiter de celles belles couleurs. Et voilà une comparaison : à gauche les couleurs par défaut pour chaque type de fichier, et droite les couleurs Solarized :

À droite les couleurs Solarized, plus douces et agréables à l’usage

Tant que j’y étais, j’ai modifié mon prompt pour avoir quelques chose de sobre, et un retour ligne après l’affichage du chemin afin de garder un ligne complète pour taper les commandes :

[~/Documents/Scripts]
pascal$ echo $PS1
\[\e]0;\u@\h: \w\a\]\[\033[33m\][\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]\[\033[0m\]$
[~/Documents/Scripts]
pascal$ cd 
[~]
pascal$

Ce qui donne ça :

Nouveau prompt, affiche le répertoire courant, puis retour ligne pour le prompt

Les éditeurs Gedit et Geany

Sur la lancée, pourquoi ne pas appliquer les mêmes couleurs aux éditeurs graphiques ? On trouve facilement les thèmes correspondants sur le web, il suffit de copier le fichier de configuration au bon endroit.

Gedit : on trouve les fichiers sur cette page Github, on clique sur download, et on récupère un zip d’où l’on peut extraire deux fichiers solarized-light.xml et solarized-dark.xml. Il suffit ensuite de créer le bon répertoire et d’y copier les fichiers :

mkdir -p ~/.local/share/gedit/styles
cp solarized-* ~/.local/share/gedit/styles

Ensuite, on lance Gedit, et l’on va dans les Préférences, onglet Polices et couleurs, et on choisit Solarized foncé. L’occasion de s’apercevoir qu’il y en avait déjà un, mais avec des couleurs différentes ! 😕

Il y a un nouveau jeu de couleur Solarized foncé

Geany : Même chose, on récupère un zip sur cette page Github, dans un répertoire colorshemes, il y a plein de de fichiers de configuration, je n’ai extrait que celui qui m’intéressait, à savoir solarized-dark.conf, puis je l’ai copié dans le bon répertoire (qui existait déjà, contrairement à celui de Gedit) :

mkdir -p ~/.config/geany/colorshemes
cp solarized-dark.conf ~/.config/geany/colorshemes

Ensuite, dans Geany, on va dans le menu Affichage – Changer le jeu de couleurs, et on sélectionne notre fichier :

Jeu de couleurs Solarized (dark) disponible

Voilà, tout est fini, je peux profiter de cette nouvelle petite touche de configuration sur mon Ubuntu !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *