16色终端(控制台,没有X)只显示8种颜色?


2

我一直在我的新笔记本电脑上使用Arch Linux,我正在尝试配置它,以便我不需要DE或X服务器 - 我只需要命令行实用程序和VC(生产力并节省我从我自己,所有这一切)。无论如何,我试图让终端颜色正常工作。我还没有在xterm和urxvt之间做出决定 - 老实说,无论我能使用哪个都可能是我最终会使用的,至少在我更好地理解这个问题之前。

基本上,我的设置(据我所知,所以用盐)是在VC1上我有一个xterm / urxvt 16色终端模拟器运行(另外,我使用Zsh,如果它很重要)。我使用Tmux进行多路复用,因此我.zshrc.tmux.conf文件~/都有将默认终端设置为(xterm / rxvt)-16color的行。

如果我直接在终端或Tmux中启动emacs并运行M-x list-colors-display,它会显示16个颜色名称。前八个是常规的,它们的颜色正确。然而,颜色9-16是亮色,它们在黑色背景上显示为白色文本,没有分配颜色。

我的印象.Xresources是颜色设置,形式*color0: #353535等。所有16种颜色都列在那里,我希望它们拥有的价值。然而,八个有色的甚至不是正确的色调 - 它们是默认的引人注目的高对比度颜色,而不是我为测试下载的更加圆润的主题。

我读过你需要运行xrdb -merge ~/.Xresources才能使这些设置发挥作用。但是,我没有xrdb,当我安装它时,我得到了“显示未找到”错误(不出所料),所以我删除了它。

最后,问题是:我怎么做才能使xterm / rxvt知道(a)显示所有16种颜色(因为我很确定亮点也有默认值,所以看起来有些不对劲)和( b)使用我给出的颜色(和其他)设置.Xresources(或其他地方,如果适用)而不使用xrdb

感谢您的任何见解!


什么是DE和VC?
RedGrittyBrick 2011年

抱歉。DE =桌面环境(例如GNOME,KDE等)和VC =虚拟控制台(VC1到(通常)7是你在ALT + F1到ALT + F7之间看到的终端,所以VC1是第一个(默认情况下,没有X运行)虚拟控制台)。
jake-low

Answers:


1

如果您使用的是控制台而不是X服务器,则颜色设置不受〜/ .Xresources控制。对于命令行和curses应用程序,它是$ TERM的值以及termcap和terminfo中的相应条目,用于确定颜色的显示方式。

Tmux可能会使事情变得复杂,我没有尝试过,所以无法提出建议。如果没有它,我会让事情正常工作。


跟进:我发现了一些有关terminfo数据库的有用信息,但我很困惑,因为当我在emacs中打开一个(/ usr / share / terminfo / * / *)时,它显得很乱。也许这就是它应该看起来的样子,但人类无法理解。知道为什么吗?
jake-low

1
@andhrimnir:与termcap不同,terminfo数据库是二进制格式,而不是文本格式。您可以将其解码为文本,您可以编译文本表单以生成二进制terminfo文件。见man infocmpman ticman terminfo。尝试infocmp ansi寻找colors#8, setf=\E[3%p1%dm, setb=\E[4%p1%dm
RedGrittyBrick 2011年

2

在Linux 控制台(没有X)中运行,设置TERMxterm(任何风味)或rxvt(任何风味)都不会产生好的结果。的linux终端描述是最经常使用。

比较那些infocmp,例如,

infocmp xterm linux

你会看到许多不同之处。

“鲜艳色彩”的一个方面在终端描述中并不明显:Linux控制台将粗体文本显示为更亮的文本。有些人对此感到困惑,并将粗体+颜色组合称为附加颜色(它们不是,因为应用程序要求粗体,这是一种视频属性,如下划线 - 某些设备也可能呈现为颜色)。

xterm具有用于操纵16种颜色的控制序列 ; Linux控制台没有。的变化TERM,其被尝试并没有规定,但假设一个尝试xterm-16color,那么这将产生转义序列为未由Linux控制台公认的“颜色8-15”,并且将产生的白色黑底(未着色)这被描述。

如果您运行的程序在其他类型的终端上生成粗体文本,则您可能会以不同的方式进行粗体渲染(如此)。

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.