根据背景颜色更改PS1颜色?


12

我了解到可以更改PS1的格式,尤其是字符串的颜色。然后,是否可以根据外壳的背景色更改颜色?或者,如何检测外壳的背景色?

Answers:


4

据我所知,无法查询终端仿真器的颜色。如果您的终端支持该顺序\e]4;NUMBER;#RRGGBB\aNUMBER则可以使用(终端颜色编号(浅色为0–7,明亮颜色为8–15),并且#RRGGBB是十六进制RGB颜色值)进行更改(参考:ctlseqs)。

强大的配色方案机制通常具有深色或浅色背景设置,您必须提供该设置以指示您是黑色还是深灰色背景,还是白色或浅灰色背景。

当您为自己进行配置时,通常足以确定您将始终使用相同的背景色。


您可以通过查看“色带颜色”在termcap条目中获得受支持的颜色数量,但是在许多情况下,数字会很少,例如8,因为对256色端子的termcap支持确实很弱。
slacy 2012年

1
@slacy对于当今超过99%的终端,termcap / terminfo数据无关紧要:它们都是xterm的细微变化,并且不同的细节(例如颜色数量)不会反映在的值中TERM,因此不能从环境中获得。
吉尔斯(Gillles)“所以-别再作恶了”

4

如果使用的是gnome-terminal,则可以获取任何配置文件的背景色,在这种情况下,默认配置文件为

   $ gconftool-2 --get /apps/gnome-terminal/profiles/Default/background_color
   #E12FE12FC74D

然后您可以决定如何相应地设置提示。


2

使用xterm,您可以使用\e]11;?\a转义序列查询背景色。您需要从终端读取响应。有一个xtermcontrol命令可以为您执行此操作:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0

在gnome-terminal和其他一些终端模拟器中也可以使用相同的工具(但绝对不是全部)。
egmont
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.