Puis-je définir les colors de terminal de ma machine locale pour utiliser celles de la machine I ssh?

J'ai un schéma de colors que j'aime quand je suis dans un terminal, mais je ssh dans la machine je travaille à partir de plusieurs sources (localement, PuTTY, mon netbook, etc.) et je veux maintenir le même schéma de colors tout au long . Est-ce possible?

Je le veux surtout dans PuTTY; il est difficile de changer les colors PuTTY.

Les colors dans les terminaux sont déterminées en deux étapes:

  • le programme exécuté dans le terminal indique au terminal d'utiliser un certain numéro de couleur;
  • le terminal traduit chaque nombre de colors en une valeur de couleur.

Xterm a une séquence d'échappement pour changer la valeur de couleur associée à un numéro de couleur. Je ne me souviens pas si PuTTY soutient cette séquence; Je sais que Mintty le fait.

set_color_value () { printf "\\e]4;$1;$2\\a" } set_color_value 4 '#6495ed' # set color 4 (blue) to CornflowerBlue 

Ces parameters ne survivront pas à une réinitialisation du terminal. Vous pouvez surmonter cette difficulté en ajoutant la séquence de modification de la configuration du slider à la string de réinitialisation de votre terminal.

  • Sur un système basé sur terminfo utilisant ncurses, sauvegardez les parameters terminfo de votre terminal dans un file avec infocmp >>~/etc/terminfo.txt . Modifiez la description pour modifier la rs1 (réinitialisation de base), par exemple, remplacez rs1=\Ec par rs1=\Ec\E]4;4;#6495ed\E\\ . Avec certains programmes et parameters, vous devrez peut-être aussi changer le rs2 (réinitialisation complète). Ensuite, comstackz la description de terminfo avec tic ~/etc/terminfo.txt (ceci écrit sous le directory $TERMINFO , ou ~/.terminfo si unset).
  • Sur un système basé sur termcap, récupérez les parameters termcap de votre database termcap (généralement /etc/termcap ). Changez les séquences is (réinitialisation de base) et rs (réinitialisation complète) pour append vos parameters, par exemple :is=\Ec\Ec\E]4;4;#6495ed\E\\: Définissez la variable d'environnement TERMCAP sur la valeur modifiée (commençant et se terminant par TERMCAP .

Maintenant vous pouvez mettre quelque chose comme ceci dans votre ~/.profile :

 if [ "$(ps -p $PPID -o comm=)" = sshd ] && [ "$TERM" = "xterm" ]; then set_color_value … # set color scheme TERMCAP=… # if necessary fi 

Vous êtes dans une seule case, n'est-ce pas? pourquoi ne pas simplement mettre la variable PS1 sur cette boîte pour utiliser le colorscheme que vous voulez? Si vous le gardez à 16 colors, vous ne devriez pas avoir de problème sur un TERM moderne, la plupart devrait prendre en charge 256 colors, mais la plupart ne définissent pas TERM=xterm-256color et quelques imbéciles ( tousse ) assainir TERM pour être alphanumérique seulement. Malheureusement, ce qu'il faut mettre dans vos vars PS , dépend fortement du shell que vous utilisez.