控制台中的256色(tty)


11

假设我有一个没有的系统X server。我只能从控制台登录。看来,默认情况下,Linux控制台仅支持8种颜色:

# tput colors
8

是否可以在控制台中使用256种颜色,与在终端仿真器(即终结器)中使用的颜色相同?

在进行谷歌搜索时,我发现了许多类似的问题(其中许多已经超过10年了),但没有一个明确的答案。有人建议使用帧缓冲区,另一些人则建议在内核启动选项后附加TERM参数。

目前,我只传递了一个额外的选项作为内核启动参数:

append="video=1280x720"

我相信通过视频分辨率只能在kernel mode setting支持的现代内核中使用,但是我不确定。

是否可以在现代linux控制台(tty)中使用256色

怎么样?

我在内核4.1中使用Debian Wheezy

更新:

根据@muru的建议,我尝试了fbterm。尽管它可以处理256色,但其字体非常难看/乱码。此外,左下角有一个不断闪烁的光标,让我分心。

我可以在没有fbterm / framebuffer的控制台中使用256色吗?

控制台中的8种颜色限制从何而来?



@muru-感谢您的建议。我已经更新了我的问题。
Martin Vegter'1

当然,如果你设置TERMxterm-256colorLinux控制台,你只需打开蠕虫的另一个即可。 该链接提供了提示。
托马斯·迪基

RE:更新我没有“丑陋/乱码”字体,可能是因为我使用了其他字体。可能是错误的$TERM(必须fbterm 开始之前fbterm),或者不是32位视频模式,或者两者都不是。开始之前请先关闭控制台光标fbterm,然后使用来将其打开tputunix.stackexchange.com/questions/220330/...
保罗Wratt

顺便说一句,我也查看了fbterm源代码,将转义代码序列转换为xterm-256color替代代码(fbterm-xterm)很简单(但很耗时)。将$TERM还需要与内联terminfotermcap命名约定(fbterm-xterm-256colorfbterm-256color)为“槽”到现有的shell脚本。请注意,fbtermTERM=fbterm用作打开256色选项的开关,否则使用它的16色(或可能与下面的颜色相同)。
Paul Wratt

Answers:


2

实际问题包括以下两项:

  • 我可以在没有fbterm / framebuffer的控制台中使用256色吗?

  • 控制台中的8种颜色限制从何而来?

首先:显然不是。所有建议的方法都使用fbterm。第二点:它来自终端描述(也称为“ terminfo条目”)。对于Linux控制台,TERM设置为linux,表示终端支持8种颜色。 tput从终端数据库获取其信息。

其中的项目中所引用的线程说fbterm使用不同的转义序列设置的颜色比的xterm。如果是这种情况(并且考虑到Emacs用户倾向于对代码进行硬编码),则fbterm没有合适的终端条目。


Linux内核终端仿真器已经获得了一些额外的SGR支持,近年来:github.com/torvalds/linux/commit/... github.com/torvalds/linux/commit/... github.com/torvalds/linux/commit/...
JdeBP

1
确定-您可能没有阅读过签入注释:由于VGA控制台的硬件限制,颜色被*降级为16个前景和8个背景。在fbdev控制台上,可以在不损失质量的情况下支持它们,但是添加它们将需要大量代码。*
Thomas Dickey,

很久以来,我已经阅读了此评论,这就是为什么我写道它获得了一些额外的SGR支持的原因。(-:但是请注意,它并不总是像您在2016年在这里写的那样是8色限制
。– JdeBP

至今已有25年以上的历史了,它仍然是8 ANSI和8粗体/亮ANSI的调色板(并且ncurses自2009年以来就拥有linux-16color条目)。
托马斯·迪基

之前,我研究了内核源代码(大约在OP时代),并认为这是允许256色(linux-256color)的简单过程。出于与上面的Thomas Dickey注释“由于硬件限制”相同的原因,该补丁永远不会在上游接受。IE Linux 必须使用最低的公分母。
Paul Wratt
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.