Programmatically set the color of a tab in iTerm2?

17

6

My daily workflow includes me

  1. Launching iTerm2
  2. Creating 3 tabs
  3. Setting one tab each to red, orange and yellow
  4. Changing to a specific path in each tab

I would like to script this process; shell, applescript, etc. However, I cannot seem to find a hook that allows me to change the tab color. Is this possible? Here is a screen shot with an example of what I am trying to achieve.

iTerm tab setup

John Kramlich

Posted 2012-03-22T15:33:15.410

Reputation: 295

2

Doesn't Set window title and tab chrome background color help?

– peth – 2012-03-22T15:38:36.820

Answers

14

That's possible and you should read iterm escape codes for details.

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

I tried to setup the color of the terminal when I do ssh (.ssh/config) and it worked but surprise, when I close the ssh session, it will not call the script again, in order to restore the title/color.

Added a feature request to auto-colored tabs - do not forget to star it, or add your comments (patches are also welcome!)

sorin

Posted 2012-03-22T15:33:15.410

Reputation: 9 439

Aaron, would you mind sharing your script? – lfender6445 – 2015-02-26T22:19:24.680

You can also do that: ```function ssh { command ssh $@;

RESET BACK -> don't know how yet! help needed here

}``` – davidhq – 2015-03-17T14:01:47.257

Somehow I found out... I pasted it as another answer – davidhq – 2015-03-17T14:18:01.670

1I write an ssh wrapper script in my ~/bin which makes the tab color changes (and other things like custom background with server names) and uses an EXIT trap to change them back. – Aaron – 2013-06-27T18:12:33.347

13

I added this function to my ~/.profile file:

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
 }

After adding this function you have to open a new terminal session. Now you can enter:

$ color green

or

$ color orange

to change the Tab color.

I use Photoshop to compose colors:

Photoshop color picker

This color picker values can be converted to the following commands (Just insert the R -> red, G -> green, B -> blue values into the right line after "brightness;" to get a different color):

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

Posted 2012-03-22T15:33:15.410

Reputation: 131

4

To reset the tab color after exiting the ssh session use:

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

Posted 2012-03-22T15:33:15.410

Reputation: 255