Programmgesteuertes Festlegen der Farbe einer Registerkarte in iTerm2?

17

Mein täglicher Workflow umfasst mich

  1. ITerm2 starten
  2. Erstellen von 3 Registerkarten
  3. Setzen Sie jeweils eine Registerkarte auf Rot, Orange und Gelb
  4. Wechseln zu einem bestimmten Pfad in jeder Registerkarte

Ich möchte diesen Prozess als Skript ausführen. Shell, AppleScript usw. Ich kann jedoch keinen Haken finden, mit dem ich die Tab-Farbe ändern kann. Ist das möglich? Hier ist ein Screenshot mit einem Beispiel dessen, was ich erreichen möchte.

iTerm Tab Setup

John Kramlich
quelle

Antworten:

14

Das ist möglich und Sie sollten die Escape-Codes lesen, um Einzelheiten zu erfahren .

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

Ich habe versucht, die Farbe des Terminals ssheinzustellen, als ich dies tat (.ssh / config), und es hat funktioniert, aber überraschend, wenn ich die ssh-Sitzung beende, wird das Skript nicht erneut aufgerufen, um den Titel / die Farbe wiederherzustellen.

Hinzufügen einer Funktionsanforderung zu automatisch eingefärbten Registerkarten - Vergessen Sie nicht, diese anzukreuzen, oder fügen Sie Ihre Kommentare hinzu (Patches sind ebenfalls willkommen!)

Sorin
quelle
1
Ich schreibe ein ssh-Wrapper-Skript in mein ~ / bin, das die Farbe der Registerkarte ändert (und andere Dinge wie den benutzerdefinierten Hintergrund mit Servernamen) und benutze eine EXIT-Trap, um sie zurück zu ändern.
Aaron
Aaron, würde es dir etwas ausmachen, dein Drehbuch zu teilen?
lfender6445
Das können Sie auch tun:function ssh { command ssh $@; # RESET BACK -> don't know how yet! help needed here }
davidhq
Irgendwie habe ich es herausgefunden ... Ich habe es als eine andere Antwort
eingefügt
13

Ich habe diese Funktion zu meiner ~ / .profile-Datei hinzugefügt:

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
 }

Nach dem Hinzufügen dieser Funktion müssen Sie eine neue Terminalsitzung eröffnen. Jetzt können Sie eingeben:

$ color green

oder

$ color orange

um die Tab-Farbe zu ändern.

Ich benutze Photoshop, um Farben zu komponieren:

Photoshop-Farbwähler

Diese Farbwählerwerte können in die folgenden Befehle konvertiert werden (fügen Sie einfach die Werte R -> Rot, G -> Grün, B -> Blau in die rechte Zeile nach "Helligkeit;" ein, um eine andere Farbe zu erhalten):

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
quelle
4

So setzen Sie die Tab-Farbe nach dem Beenden der SSH-Sitzung zurück:

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
quelle