Univers Libre

Changer simplement la couleur du curseur dans rxvt

Written on 1 November 2013, 17:53 EDT
Tags: rxvt, sysadmin.

Où comment identifier facilement le serveur de prod de celui de preprod (ou le master du slave, ou celui de prod et son futur remplaçant…).
Bref, comment différencier facilement votre terminal avec une connexion SSH sur un serveur critique, et celui vers un serveur où vous pouvez tout casser^W^W^W^W^W moins critique.
C'est surtout valable quand les hostnames ne diffèrent que d'une lettre ou d'un chiffre, où la confusion est plus facile.

Si il s'agit d'un serveur perso, le plus simple reste de modifier le prompt de votre shell. Mais ce n'est pas envisageable sur un serveur sur lequel vous vous contentez d'intervenir, ou où plusieurs admin sont susceptibles d'utiliser le compte root.

La solution est d'agir au niveau de votre terminal, ici urxvt. Les options de rxvt peuvent être quasiment toutes changées à chaud grâce à des commandes envoyées dans des séquences d'échappement du shell. Par exemple, pour avoir un curseur rouge, la commande à envoyer est \033]12;red\007. Vous pouvez tester avec un simple echo :

$ echo '\033]12;red\007'

C'est magique, mais ça reste compliquer à écrire, et encore plus à retenir. On va donc affecter la commande à une séquence de touche, par exemple Alt+! (et Alt+Shift+!). Dans votre .Xdefaults/.Xressources :

URxvt.keysym.M-S-exclam: command:\033]12;red\007
URxvt.keysym.M-exclam: command:\033]12;#657b83\007  # #657b83 à remplacer par la couleur de votre police par défaut.

À noter qu'ainsi, même en étant dans un éditeur de texte, vous identifierez rapidement le serveur de prod car le curseur restera rouge, ce qui n'est pas le cas avec un prompt coloré.

L'inconvénient est que le changement de couleur du curseur n'est pas automatique, même si il est bien simplifié. Si vous avez une liste précise de serveurs en prod, une idée peut être, à l'aide d'une extension Perl à rxvt, de comparer le titre de la fenêtre X11 (qui contient le hostname du serveur) à cette liste, pour pouvoir changer la couleur du curseur en conséquence.

Référence :