以编程方式设置 iTerm2 中选项卡的颜色?

以编程方式设置 iTerm2 中选项卡的颜色?

我的日常工作流程包括

  1. 启动 iTerm2
  2. 创建 3 个标签
  3. 将一个标签分别设置为红色、橙色和黄色
  4. 在每个选项卡中更改为特定路径

我想编写此过程的脚本;shell、applescript 等。但是,我似乎找不到允许我更改标签颜色的钩子。这可能吗?以下是屏幕截图,其中有我试图实现的示例。

iTerm 标签设置

答案1

这是可能的,你应该读一下iterm 转义代码了解详情。

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

我尝试在执行(.ssh/config)时设置终端的颜色,ssh并且它起作用了,但是令人惊讶的是,当我关闭 ssh 会话时,它不会再次调用脚本来恢复标题/颜色。

添加了功能请求自动着色标签- 不要忘记给它加星标,或者添加您的评论(也欢迎补丁!)

答案2

我将此功能添加到我的 ~/.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
 }

添加此功能后,您必须打开一个新的终端会话。现在您可以输入:

$ color green

或者

$ color orange

更改标签颜色。

我使用 Photoshop 来组合颜色:

Photoshop 颜色选择器

此颜色选择器值可以转换为以下命令(只需将 R -> 红色、G -> 绿色、B -> 蓝色值插入“亮度;”后的右行即可获得不同的颜色):

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"

答案3

要在退出 ssh 会话后重置选项卡颜色,请使用:

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"
}

答案4

更新最佳答案,使用时color无需参数即可自动支持随机颜色

将以下几行添加到~/.profile~/.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    

每次创建新的 iterm2 选项卡后,使用命令color自动赋予其新的/随机的颜色。

如果你希望 iterm2-tab 在创建时自动设置颜色,那么只需在/color的末尾或在.zshrc.profilefunction color

相关内容