Linux : comment renommer son terminal ?

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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Thibault Baheux

Responsable Infrastructure IT, Geek, Manager de geeks, Je travaille au quotidien sur une infra Cloud privée / Cloud Azure, aussi bien Windows que Linux. Je me passionne pour Azure & AWS, le DevOps, la sécurité & la programmation objet (PowerShell / Python). Si je ne suis pas derrière mon clavier, vous me trouverez dans une salle de blocs ou devant un bon mur d’escalade.

thibault-baheux has 14 posts and counting.See all posts by thibault-baheux

Laisser un commentaire

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

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.