我可以更改 xterm-256color 终端的默认调色板吗?

我可以更改 xterm-256color 终端的默认调色板吗?

我注意到,使用普通的 16 色 xterm,我可以使用“*color0: #”到“*color15: #”命令重新分配 .Xresources 文件中的颜色值。

我切换到 xterm-256color ,目的是使用更多颜色,但颜色重新分配似乎不再起作用。

有没有办法重新分配 256 调色板?或者是否有另一个 xterm 设置来允许更多颜色选项?

答案1

您可以使用转义序列对调色板进行编程,或者更好地使用tput.

有一个xterm 源代码中的脚本它演示了转义序列:

256 色(默认)

并使用脚本反转调色板:

256 色(反转)

那是为了xterm当然。一些与 xterm 类似的工具花了一段时间(部分)实现该功能,而有些则还没有这样做。

可以编译 xterm 以支持 256 色资源,但会丢失 UTF-8,如手动的

           Resources past color15 are available as a compile-time option.
           Due to a hardcoded limit in the X libraries on the total number
           of resources (to 400), the resources for 256-colors are omitted
           when wide-character support and luit are enabled.  Besides
           inconsistent behavior if only part of the resources were
           allowed, determining the exact cutoff is difficult, and the X
           libraries tend to crash if the number of resources exceeds the
           limit.  The color palette is still initialized to the same
           default values, and can be modified via control sequences.

答案2

我无法判断“*color16”和朋友是否在 .Xresources 中工作,如果不是那么为什么不呢。

但是,您可以使用 OSC 4 转义序列动态更改实际颜色,例如,要将颜色 16 更改为 #abcdef,您应该执行以下操作:

echo -ne '\e]4;16;#abcdef\a'

您可以将此类语句放在 中.bashrc,条件是输出转到终端 ( if [ -t 1 ]; then...) 或 shell 是交互式的(在 中查找“i” $-),这样就不会破坏 scp/rsync。

这得到了支持一些终端仿真器,包括 xterm 和 vte(gnome-terminal 等),但不是很多其他仿真器,例如 konsole。

前 16 种颜色在所有终端模拟器中都不同,因此它们提供了首选值的设置(通过配置文件或在图形首选项对话框中,具体取决于模拟器)。然而,据我所知,额外的 232 种(6x6x6 颜色立方体 + 24 灰度)颜色在所有终端模拟器中完全相同。通过重新定义它们,您将偏离“每个人”,这可能不是最好的主意。

您还可以查看真彩色支持。不过,它的可用性相当有限。一些流行的终端仿真器(例如 gnome-terminal 和 konsole)支持它,但遗憾的是其他流行的仿真器(例如 xterm 或 uxrvt)不支持它。此外,它几乎不受任何应用程序支持,但如果您手动发出转义序列(例如在 shell 提示符或简单脚本中),则很容易使用它们。

相关内容