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

17

Mon flux de travail quotidien m'inclut

  1. Lancement d'iTerm2
  2. Création de 3 onglets
  3. Réglage d'un onglet chacun sur le rouge, l'orange et le jaune
  4. Passer à un chemin spécifique dans chaque onglet

Je voudrais scénariser ce processus; shell, applescript, etc. Cependant, je n'arrive pas à trouver un crochet 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.

Configuration de l'onglet iTerm

John Kramlich
la source

Réponses:

14

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

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

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

Ajout d'une demande de fonctionnalité aux onglets colorés automatiquement - n'oubliez pas de la mettre en vedette ou d'ajouter vos commentaires (les correctifs sont également les bienvenus!)

Sorin
la source
1
J'écris un script de wrapper ssh dans mon ~ / bin qui modifie la couleur de l'onglet (et d'autres choses comme un arrière-plan personnalisé avec les noms de serveur) et utilise un piège EXIT pour les modifier.
Aaron
Aaron, ça te dérangerait de partager ton script?
lfender6445
Vous pouvez également le faire:function ssh { command ssh $@; # RESET BACK -> don't know how yet! help needed here }
davidhq
D'une certaine façon, j'ai découvert ... Je l'ai collé comme une autre réponse
davidhq
13

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. Vous pouvez maintenant saisir:

$ color green

ou

$ color orange

pour changer la couleur de l'onglet.

J'utilise Photoshop pour composer des couleurs:

Sélecteur de couleurs Photoshop

Les valeurs de ce sélecteur de couleurs peuvent être converties en commandes suivantes (il suffit d'insérer les valeurs R -> rouge, G -> vert, B -> bleu dans la bonne ligne après "luminosité;" 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"
Markus Perl
la source
4

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"
}
davidhq
la source