每次打开终端时自动获得不同的终端颜色


14

我经常会发现自己打开了三个终端,我真的很喜欢每个终端都有不同调色板的外观。

我保存了一些调色板,我希望每次打开终端时都能在保存的配置文件中使用默认的调色板,因此,如果我打开3种,则每种颜色都是不同的,而无需手动更改2种配置文件。

有什么想法吗?

谢谢!


只需使用可以满足您需求的脚本来编辑我的答案。应该将其添加到./bashrc文件中。希望它适合您的需求!
IanC

Answers:


10

功能版本

说明:

脚本认为您使用的是gnome-terminal,这是默认的Ubuntu终端。

在运行脚本之前,打开gnome终端并根据需要创建一些配置文件(“编辑”>“首选项”>“配置文件”),这些配置文件具有不同的设置(背景颜色,文本颜色,..)。您可以将它们命名为Profile1,Profile2,Profile3等。创建足够的配置文件以涵盖将要打开的终端数量,但是如果打开的终端数量更多,则将使用默认配置文件。

该脚本创建了〜/ .Bash_Color_Changer文件,它依赖于此文件,因为它将告诉脚本终端是定期打开还是在调用.bashrc之后打开。

将脚本添加到〜/ .bashrc文件的末尾。

脚本:

添加到.bashrc

#Change color according to the number of Bash shells opened
#Creates the .Bash_Color_Changer file if it's not present
if ! [ -f ~/.Bash_Color_Changer ]; then
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

#Array holding the name of the profiles: Substitute it for the names you're using
Color_counter=(Profile1 Profile2 Profile3)
#Finds out the number of opened bashs counting the lines containing "bash"
#in the pstree function. (-c deactivates compact display to avoid it showing
#lines with "2*[bash]" instead of one for each bash)
Number_of_bashs=$(($(pstree -c | grep "bash" | wc -l)-1))

#Checks if the terminal being opened was opened by the user or by
#the script, and act according to it
if [ $(cat ~/.Bash_Color_Changer) = ORIGINAL ]; then 
    if ((Number_of_bashs < ${#Color_counter[*]})); then
        echo COPY > ~/.Bash_Color_Changer
        gnome-terminal --tab-with-profile-internal-id=${Color_counter[${Number_of_bashs}]} 
        exit
    fi
else 
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

经过测试,但未进行广泛的测试。请享用!


明天的想法是exit根据诸如~/bashcolor.txt。的文件添加条件。它可能需要一行来说明正在打开的bash是“原始”还是“副本”。因此,如果cat ~/bashcolor.txt返回“ ORIGINAL”,exit则运行命令echo COPY > ~/bashcolor.txt。否则,退出不会运行,但文件会恢复为原始(echo ORIGINAL > ~/bashcolor.txt)。它将解决闪烁的终端问题。
IanC

制作有趣的脚本,甚至可以自己使用它:)欢迎任何改进建议!
IanC

这部作品在值得信赖的+1
boomt14

2
我对我的版本进行了1项更改...这样,当您打开的终端数量超过配置文件数量时,它可以保持循环。 Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie

真好!我没想到要使用模数来保持迭代循环:p
IanC

9

一种选择是使用xfce4-terminal。它与默认的Ubuntu终端非常相似(gnome-terminal),并且许多依赖包都使用gtk组件,这使其成为合适的替代方案。

首先安装

sudo apt-get install xfce4-terminal

然后将其打开,转到“ 编辑” -> “首选项”,选择“ 颜色”选项卡,并选中以下选项:更改每个选项卡的背景色,然后退出。

设置默认终端xfce4-terminal或更改其快捷方式以Ctrl-Alt-T将其打开。

现在,每次打开时,都会看到不同的调色板。 不同颜色的终端

有用的链接:


5

哈哈,非常有趣。我也可以尝试这样做。我主要只运行多个终端和一个浏览器。

所以我环顾四周,发现了这个-https://github.com/sos4nt/dynamic-colors。一个非常简洁的小项目,可以帮助您实现所需的一部分。

现在,在该colorschemes/项目的目录中,您会看到它当前有4种配色方案。您可以根据需要/添加任意数量。

因此,要使每个终端选择不同的颜色方案,我将向.bash_profile.bashrc或任何地方添加一个函数,以便该函数执行以下两项操作:

  1. 找出当前正在运行的终端数量
  2. 发出dynamic-colors switch colorscheme-name基于(1)的命令。

希望这可以帮助!

PS:我会为您编写脚本,但我讨厌用勺子喂食,而且我很懒。:)


一个好人...创建一个包装/别名的终端命令将实现这一目标。
Vishnu Kumar

@VishnuKumar,是的,虽然这可能不是最佳解决方案,但这是第一个想到的。很高兴你喜欢它。
theabhinavdas

+1是一个好的答案,我真的不想和“ works”打架,但是这个答案要求我使用我在dynamic-colors项目中使用的专有样式定义,此外(这确实让我知道) '不支持opacity :(我认为答案应该涉及gnome-terminal --load-config=FILE
kpie

@kpie,哈哈。在这个问题中没有提到不公平,不透明。而且,很难从命令行设置不透明度,并且在很多方面取决于很多事情。另外,可以以各种方式回答这个问题,但是我认为我的回答很方便(如果仅对我来说,哈哈):)
theabhinavdas

我希望能够通过提供所需的脚本弥补针织采摘... github.com/Krewn/stylingTerminalOnOpen我应该指定它不支持变浑浊,颜色方案将保持您的默认配置文件的透明度。
kpie

1

Konsole实际上本身就支持此功能。Konsole确实功能强大且高度可定制。

如果您没有Konsole,则只需 sudo apt install konsole

  1. 前往设置
  2. Konsole设置
  3. 选择外观标签
  4. 选择您的配色方案
  5. 选择右侧的“编辑”
  6. 有一个框可以设置“改变每个标签的背景颜色”

最重要的是,如果您同时在三台服务器上工作,则可以包括此处显示的一些漂亮的别名


+1得到一个好的答案,但我没有Konsole。@ <MemoryAddress>的答案支持更多终端接口(任何支持OSC转义序列的接口)。但是您的使用起来更容易。我将悬赏给几天内获得最多票数的人。感谢您的回答!
kpie

您会惊讶的是,实际上有多少人会在这里发表评论,告诉我我需要告诉您如何安装它-_-
Matt O.

您是否阅读过其他评论?
kpie

是的 也许我错过了一些东西,但是您正在寻找可变的不透明度以及不需要别名的东西。Konsole实现了这两个目标,但是我不确定转义序列。
Matt O.

1
哈哈我明白了。不要怪我,在这里有足够的坚果人之后,建议编辑只是我自动完成。我不是要侮辱你的智慧。
Matt O.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.