xterm 颜色太亮

xterm 颜色太亮

我几天前刚刚开始使用 dwm,并且使用 xterm (uxterm) 作为终端模拟器。

但是,我注意到某些以颜色输出的应用程序(如 vi/vim、ls 等)使用明亮的颜色和(有时)粗体字体。我的终端的背景颜色是深色柔和的,所以我希望颜色能够匹配。

我怎样才能改变这些颜色,有没有办法使用#xxxxxx颜色?

答案1

Xterm 配置通过X资源。您可以通过以下方式将其配置为黑底白字,蓝色比默认值更浅(显然,根据您认为合适的情况调整颜色):

XTerm.VT100.background:         Black
XTerm.VT100.color0:             Black
XTerm.VT100.color1:             Red
XTerm.VT100.color2:             Green
XTerm.VT100.color3:             Yellow
XTerm.VT100.color4:             CornflowerBlue
XTerm.VT100.color5:             Magenta
XTerm.VT100.color6:             Cyan
XTerm.VT100.color7:             White
XTerm.VT100.colorBD:            White
XTerm.VT100.colorBDMode:        true
XTerm.VT100.colorUL:            Yellow
XTerm.VT100.colorULMode:        true
XTerm.VT100.cursorColor:        Red
XTerm.VT100.foreground:         White

xcolors您可以使用 X 颜色名称(您可以在名为 的文件中看到所有颜色名称,rgb.txt该文件可能位于/etc/X11/usr/X11/usr/share/X11或某个类似位置,具体取决于您的系统)或#RRGGBBcolorBD是用于粗体的颜色;如果colorBDMode设置为false(默认值),则忽略此设置,并且粗体文本以粗体显示。colorULcolorULMode和下划线也是如此。您可以超出color8(最多color255或更少,具体取决于 xterm 版本和编译时配置)。color8throughcolor15对应0-7,加粗;应用程序很少使用超过 16 种颜色,除非您明确配置了它们。

将这些设置放入一个名为~/.Xdefaults.大多数系统会在您登录时自动加载此文件。如果您的系统没有,请将此命令添加到您的 X 启动脚本中:

xrdb -merge ~/.Xdefaults

要测试前景色 42 相对于背景色 17 的外观,请在该终端的 shell 中运行以下命令:

printf '\033[38;5;%dm\033[48;5;%dm%s\033[0m\n' 42 17 "Hello, world."

如果您的 xterm 编译时没有扩展颜色支持,则您需要使用经典的控制序列:

printf '\033[3%dm\033[4%dm%s\033[0m\n' 4 1 "Hello, world."

在这种情况下,前景色和背景色必须在 0–7 范围内。如果您的 xterm 编译时支持 16 色,请将[3和分别替换[4[9[10来选择明亮的版本(颜色 8-15)。

答案2

您可以通过编辑.Xdefaults主目录中的文件来做到这一点。您可以尝试一些其他人可用的.Xdefaults设置,例如这个使用“zenburn”深色配色方案。您将仅使用以“xterm”开头的行。刚刚测试过它uxterm也适用于这种方式。如果由于某种原因不适合您,请将行开头更改为“uxterm”。

答案3

既然您提到您正在使用 dwm:您也可以单独保留 X 资源(如其他答案中提到的),而是修改调用终端的命令。在我的中config.h,我修改了终端命令来读取

static const char *termcmd[]  = { "uxterm", "+cm", "+dc", "-bg", "black", "-fg", "gold", NULL };

它启用颜色并在黑色上使用金色参见https://linux.die.net/man/1/xterm了解可用选项。 (请注意,更改配置后必须重新编译 dwm。)

答案4

长话短说

我怎样才能改变这些颜色[?]

您可以使用文件更改这些颜色.Xresources

[我]有办法使用#xxxxxx 颜色吗?

是的。例如xterm*color1: ffa70a(虽然我不建议lightsalmon作为你的xterm*color1)。请注意,我想在其他规范中,您可以使用等效选项 -xterm*color1: rgb:ff/a7/0a我认为它更具可读性(特别是对于刚刚学习 *NIX 系统的人;如果您对 感觉更好#ffa70a,请随意使用它)。

使所有颜色的亮度低于默认值的示例是:

$ cd
$ test -f .Xresources && \
  cp .Xresources .Xresources.$(date '%s').bak \
  # backing up existing .Xresources if it exists
$ test -f .Xresources || touch .Xresources \
  # creating .Xresources if it doesn't exist

使用您最喜欢的编辑器进行编辑~/.Xresources对于此示例,文件最终应为

xterm*color1: gray40
xterm*color2: red5
xterm*color3: green5
xterm*color4: yellow5
xterm*color5: magenta5
xterm*color6: cyan5
xterm*color7: white5
xterm*color8: gray50
xterm*color9: red2
xterm*color10: green2
xterm*color11: yellow2
xterm*color13: magenta2
xterm*color14: cyan2
xterm*color15: white2

跑步

$ xrdb -merge ~/.Xresources

那么,你的

$ xterm &

应该带来一些不太明亮的东西。

我应该在 TL;DR 中提到一项资源,因为它对我来说非常有用xterm,等等。

Thomas E. Dickey 的《看不见的岛》:XTerm 常见问题解答


细节

@Gilles_'SO-_stop_being_evil' 有一个很好的答案 - 我特别喜欢有关如何从终端预览颜色printf以及 ascii 颜色代码的转义的信息。

@Gilles 的答案帮助我找到了解决方法我的太亮的 XTerm 东西。令我困扰的部分是明亮的绿色<username>@<machine-name>。 (有关我没有屏幕截图的原因,请参阅注释 {1}。)我无法使用任何列出的颜色进行更改,而且我并不真正了解如何使用该信息

如果您的 xterm 编译时支持 16 色,请将 [3 和 [4] 分别替换为 [9 和 [10],以选择明亮的版本(颜色 8-15)。

我被引导去看来自 X.org 的文档。如果之前的链接指向

https://www.x.org/releases/X11R6.7.0/doc/xterm.1.html#:~:text=color0%20%28class%20Color0%29

不会将您带到带有“color0(类 Color0)”的页面部分,然后 为“color0(类 Color0)”执行Ctrl+操作。在文档中, -f之后没有列出任何内容,但在可以阅读之后color0color6color7

这些指定 ISO-6429 扩展的颜色。默认值分别是...

之后,颜色与@Gilles 的表格相匹配,但我显示了文档中的内容。我重复它是为了提供第二种看待它的方式,并用粗体文本和我在方括号内添加的注释来强调。

...默认值分别是,
黑色的[意义color0],
红3[意义color1],
绿色3[ color2],
黄3[ color3],
道奇蓝1[ color4],
    [ 注意 linux.die.net/man/1/xterm
                        man xterm | grep -B9 -A32 color4
      两者都列出“可定制的深蓝色”
      与什么匹配 color4]
品红3[color5 ], 青色3[color6 ], 和灰色90[ color7]。

对于这些命名颜色的 RGB(或其他颜色空间)坐标,使用X11查找,或者,如果这不起作用,则使用。我已经看到很多资源将其列出在,但在我的机器上(参见注释 2)它位于。rgb.txtfind /usr/share/ -type f -name "rgb.txt" 2>&1 | grep -i "X11"find /usr/ -type f -name "rgb.txt" 2>&1 | grep -i "X11"/usr/X11R6/lib/X11/rgb.txt/usr/share/X11/rgb.txt

color8此外,在-之后没有列出任何内容color14,但在color15可以阅读之后

如果还启用了粗体属性,它们指定 ISO-6429 扩展的颜色。默认资源值分别是,
灰色30[ color8],
红色的[ color9],
绿色的[ color10],
黄色的[ color11],
钢蓝1[ color12],
    [ 注意 linux.die.net/man/1/xterm
                        man xterm | grep -m1 -B34 -A5 color15
      两者都列出“可定制的浅蓝色”
      与什么匹配 color12]
品红[ color13],
青色[ color14],
白色的[ color15]。

至于“如果启用粗体属性”,除非您更改了默认值,例如通过添加xterm*boldMode: false到您的.Xresources.Xdefaults.

.Xresources有了所有这些信息,我就能够通过在我的主目录(cd; touch .Xresources)中创建一个文件来解决我的太亮绿色问题。我选择了这个而不是.Xdefaults,因为我读到了.Xdefaults不推荐使用的地方。可悲的是,我没有这方面的来源。然后,我添加了这一行,

xterm*color10: green2

green2比 亮,green比 亮green3

和跑步

xrdb -merge ~/.Xresources

为了使其他大胆的颜色不那么明亮,可以使用以下.Xresources颜色:

xterm*color8: gray20
xterm*color9: red2
xterm*color10: green2
xterm*color11: yellow2
xterm*color13: magenta2
xterm*color14: cyan2
xterm*color15: white2

你也可以做一切通过对其他颜色对执行类似xterm*color3: green3with等操作来降低亮度。xterm*color10:green6

您还可以使用十六进制 ( #xxxxxx) 和 RGB 十进制值。我毫不怀疑您也可以使用其他规格的颜色。所以,回答你的问题:

我怎样才能改变这些颜色,有没有办法使用#xxxxxx颜色?

您可以使用文件更改这些颜色.Xresources

您可以使用#xxxxxx颜色,例如xterm*color10: #00ee00

(分别)。


笔记
{1}我想发布一张屏幕截图,但截至目前(2021 年 12 月 23 日),StackExchange 网站似乎在处理附加图像时遇到了问题,而且我无法将来自 Wayback Machine 的备份放在工作中。
{2}以下命令和输出显示我的计算机信息。我正在运行 RHEL 8,RHEL 代表编辑H企业L伊努斯。

$ uname -a
Linux MYMACHINE 4.18.0-240.10.1.el8_3.x86_64 #1 SMP Wed Dec 16 03:30:52 EST 2020 x86_64 x86_64 x86_64 GNU/Linux

其他有用的资源:
颜色空间中的颜色名称和位置
一个 SO 答案,其中包含有用的注释,描述了某些因素color[1]?[0-9]会影响什么
ArchLinux:了解 Xdefault 终端颜色
xterm 中的颜色[0..15] 有何用途? 特定于应用程序的 .xresources 示例
AstroBetter - 自定义 xTerm 和终端:颜色,请小心备份您的LS_COLORS环境变量,例如echo $LS_COLORS > ~/.env_LS_COLORS.$(date +'%s').bak在尝试这些操作之前。
非常接近我最终使用的,请注意,这会禁用粗体,正如我最终所做的那样。
也许最有用的:Thomas E. Dickey 的《看不见的岛》:XTerm 常见问题解答

相关内容