24 votes

Définir par programme la couleur d'un onglet dans iTerm2 ?

Mon flux de travail quotidien comprend

  1. Lancement d'iTerm2
  2. Création de 3 onglets
  3. Définir un onglet pour chaque couleur : rouge, orange et jaune.
  4. Passage à un chemin spécifique dans chaque onglet

Je voudrais script ce processus ; script, applescript, etc. Cependant, je n'arrive pas à trouver un hook qui me permette de changer la couleur de l'onglet. Est-ce possible ? Voici une capture d'écran avec un exemple de ce que j'essaie de réaliser.

iTerm tab setup

19voto

Markus Perl Points 181

J'ai ajouté cette fonction à mon fichier ~/.profile :

function color {
    case $1 in
    green)
    echo -e "\033]6;1;bg;red;brightness;57\a"
    echo -e "\033]6;1;bg;green;brightness;197\a"
    echo -e "\033]6;1;bg;blue;brightness;77\a"
    ;;
    red)
    echo -e "\033]6;1;bg;red;brightness;270\a"
    echo -e "\033]6;1;bg;green;brightness;60\a"
    echo -e "\033]6;1;bg;blue;brightness;83\a"
    ;;
    orange)
    echo -e "\033]6;1;bg;red;brightness;227\a"
    echo -e "\033]6;1;bg;green;brightness;143\a"
    echo -e "\033]6;1;bg;blue;brightness;10\a"
    ;;
    esac
 }

Après avoir ajouté cette fonction, vous devez ouvrir une nouvelle session de terminal. Maintenant vous pouvez entrer :

$ color green

ou

$ color orange

pour modifier la couleur de l'onglet.

J'utilise Photoshop pour composer les couleurs :

Photoshop color picker

Les valeurs de ce sélecteur de couleurs peuvent être converties dans les commandes suivantes (il suffit d'insérer les valeurs R -> rouge, G -> vert, B -> bleu dans la ligne de droite après "brightness ;" pour obtenir une couleur différente) :

echo -e "\033]6;1;bg;red;brightness;57\a"
echo -e "\033]6;1;bg;green;brightness;197\a"
echo -e "\033]6;1;bg;blue;brightness;77\a"

18voto

Pete Points 170

C'est possible et vous devriez lire codes d'échappement iterm pour les détails.

^[]6;1;bg;red;brightness;N^G

J'ai essayé de configurer la couleur du terminal lorsque je fais ssh (.ssh/config) et cela a fonctionné mais surprise, lorsque je ferme la session ssh, il n'appelle pas le script à nouveau, afin de restaurer le titre/couleur.

Ajout d'une demande de fonctionnalité à onglets auto-colorés - n'oubliez pas de l'étoiler, ou d'ajouter vos commentaires (les correctifs sont également les bienvenus !).

4voto

davidhq Points 255

Pour réinitialiser la couleur de l'onglet après avoir quitté la session ssh, utilisez :

function ssh {
  command ssh $@
  echo -e "\033]6;1;bg;red;brightness;176\a"
  echo -e "\033]6;1;bg;green;brightness;181\a"
  echo -e "\033]6;1;bg;blue;brightness;175\a"
}

0voto

Simon Huang Points 1

Mettre à jour la meilleure réponse, pour supporter la couleur aléatoire automatiquement quand on utilise color sans argument

ajouter les lignes suivantes à ~/.profile ou ~/.zshrc :

PRELINE="\r\033[A"

function random {
    echo -e "\033]6;1;bg;red;brightness;$((1 + $RANDOM % 255))\a"$PRELINE
    echo -e "\033]6;1;bg;green;brightness;$((1 + $RANDOM % 255))\a"$PRELINE
    echo -e "\033]6;1;bg;blue;brightness;$((1 + $RANDOM % 255))\a"$PRELINE
}

function color {
    case $1 in
    green)
    echo -e "\033]6;1;bg;red;brightness;57\a"$PRELINE
    echo -e "\033]6;1;bg;green;brightness;197\a"$PRELINE
    echo -e "\033]6;1;bg;blue;brightness;77\a"$PRELINE
    ;;
    red)
    echo -e "\033]6;1;bg;red;brightness;270\a"$PRELINE
    echo -e "\033]6;1;bg;green;brightness;60\a"$PRELINE
    echo -e "\033]6;1;bg;blue;brightness;83\a"$PRELINE
    ;;
    orange)
    echo -e "\033]6;1;bg;red;brightness;227\a"$PRELINE
    echo -e "\033]6;1;bg;green;brightness;143\a"$PRELINE
    echo -e "\033]6;1;bg;blue;brightness;10\a"$PRELINE
    ;;
    *)
    random
    esac
}

#uncomment to enable automatically set random color when tab created
#color    

Après chaque création d'un nouvel onglet iterm2, utilisez la commande color pour lui donner automatiquement une couleur nouvelle/aléatoire.

si vous voulez que la couleur de l'onglet iterm2 soit définie automatiquement à chaque fois qu'il est créé, alors .ajoutez simplement color jusqu'à la fin de .zshrc / .profile ou juste après le function color

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X