Linux : comment renommer son terminal ?
Sommaire
I. Présentation
Je ne sais pas vous, mais perso j’ai souvent plusieurs terminaux d’ouverts, chacun avec sa propre thématique : bash, zsh, tutoriel en cours, PowerShell (oui, je sais, PowerShell sous Linux, allez-y, huez-moi :D).
Et question d’organisation, j’aime bien que chacun porte un nom évocateur. C’est simple, on ne cherche pas 3 heures la bonne fenêtre : on sait d'un coup d’œil où on se trouve.
Sauf que voilà : l’application terminal par défaut d’Ubuntu Gnome ne le permet pas / plus. On peut customiser son arrière-plan, même mettre un GIF animé (la classe!), mais renommer sa fenêtre ? Non pas possible.
Et comme je refuse de m’avouer vaincu, laissez-moi vous donner ma petite astuce pour résoudre ça. Vous l'aurez compris, dans ce tutoriel, je vais répondre à la question suivante : comment renommer son terminal sous Linux ?
II. Prérequis
- Terminal bash (Distribution Linux ou WSL)
III. Utiliser le terminal Mate
La première option serait de changer de terminal. On peut installer Terminal Mate sous Ubuntu, qui permet nativement de renommer sa fenêtre.
Pour l’installer :
sudo apt install mate-terminal -y
Note : Le -y vous permet d'éviter de donner votre confirmation avant installation des paquets.
Comme vous pouvez le constater, c’est on ne peut plus simple : Cliquez sur le menu Terminal, puis sur Modifier le titre. Et ça marche !
Je ne comprends d'ailleurs toujours pas pourquoi sur Gnome cette fonctionnalité pourtant bien pratique (indispensable même) a tout bonnement disparu du terminal. Si quelqu’un a une explication, je suis preneur.
Maintenant, laissez-moi vous avouer quelque chose : j’adore utiliser mon terminal avec une petite touche de transparence. C’est pratique quand vous passez votre temps à switcher entre la doc et le terminal sur le laptop, et puis ça peut impressionner vos voisins dans le train :D.
Et le truc, c’est que je n’ai jamais réussi à faire fonctionner correctement la transparence correctement avec le terminal Mate : c’est soirée disco, ça clignote de partout, ça pique les yeux et surtout c'est inutilisable. Et ça, ce n'est juste pas envisageable.
Je suis donc revenu à mon terminal Gnome par défaut, et la problématique reste entière. Du coup, je me suis orienté vers la seconde solution : créer une fonction custom dans mon profil bash.
IV. Fonction custom pour changer le nom du terminal
J’ai donc créé une fonction de quelques lignes qui me permet de changer facilement et rapidement le nom de mon terminal. Et pour que cela soit persistant, j’ai ajouté cette fonction dans mon profil utilisateur. Comment ?
En modifiant le fichier /home/<user>/.bashrc :
vim ~/.bashrc
Puis j'ai ajouté dans ce fichier les lignes suivantes pour créer la fonction set-title :
# Fonction pour changer le titre de la fenêtre terminal function set-title() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi TITLE="\[\e]2;$*\a\]" PS1=${ORIG}${TITLE} }
Testons ça dans un nouveau terminal, en tapant set-title, suivi d’une chaîne de caractère :
set-title Coucou set-title Ceci est un super titre
Comme vous pouvez le voir, non seulement ça fonctionne, mais en plus ça prend en compte les espaces :
Maintenant un peu d’explication :
- La variable $PS1 est une variable d’environnement et correspond à votre environnement bash sous Linux.
- $* correspond à l’ensemble des arguments saisis. Autrement dit, via $* on capture tout ce qui est saisi après l'appel de notre fonction, donc après set-title.
Bien. Si on déroule notre fonction étape par étape, voici ce que ça donne :
- On commence par récupérer le contenu de la variable $PS1 et on le stocke dans $ORIG, au cas où.
- On crée ensuite une nouvelle variable $TITLE avec les entrées saisies au clavier (tout ce qu'il y a après le set-title), puis on réécrit le contenu de $PS1, en y injectant $ORIG (le prompt actuel donc), + $TITLE (le nom de la fenêtre).
Et là vous me demandez pourquoi ça marche. Comment ça se fait que la magie opère ?
Regardons plus en détail la variable TITLE, que l’on pourrait décomposer en trois sections :
- [\e]2;
- $*
- \a
On a déjà vu ce que faisait le $*. Quand aux deux autres sections, elles sont interprétées par le driver du terminal. En voyant le code [\e]2; passer, votre terminal sait qu’il va ajouter tout ce qu’il y a entre ça et le \a dans le titre du terminal.
Plutôt sympa, non ?
V. Conclusion
En l'état, il vous faudra exécuter cette fonction à chaque fois que vous souhaiterez changer le nom du terminal, la modification ne s'effectue pas automatiquement.
On verra d'ailleurs dans un futur article comment faire pour mettre à jour automatiquement le titre du terminal, par exemple pour afficher le nom du répertoire courant.
N'hésitez pas à me dire en commentaires si vous souhaitez voir d'autres customisations de l'environnement bash.