我几天前刚刚开始使用 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
或某个类似位置,具体取决于您的系统)或#RRGGBB
。colorBD
是用于粗体的颜色;如果colorBDMode
设置为false
(默认值),则忽略此设置,并且粗体文本以粗体显示。colorUL
、colorULMode
和下划线也是如此。您可以超出color8
(最多color255
或更少,具体取决于 xterm 版本和编译时配置)。color8
throughcolor15
对应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之后没有列出任何内容,但在可以阅读之后color0
color6
color7
这些指定 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.txt
find /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: green3
with等操作来降低亮度。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 常见问题解答