我想知道是否有任何方法可以在 tty 中获得真彩色支持。需要明确的是,我不是指终端模拟器,而是指没有运行显示服务器时获得的实际 tty。
答案1
Linux 控制台支持 ECMA-48 SGR 代码,包括 24 位 RGB 颜色说明符:
for (( i = 0; i < 256; i++ )); do
printf '\e[38;2;0;0;%dma\e[0m' "$i"
done
printf '\n'
然而,即使控制台正在使用帧缓冲区,当前的实现也会将其折叠为默认调色板中最接近的十六种颜色。
Linux 中的帧缓冲区本身确实支持 24 位颜色,因此可以编写一个控制台终端模拟器(例如脸书术语),完全支持 24 位 SGR 代码,但我目前不知道有哪一个。
工具如fbi
可用于在控制台上显示真彩色图像。源fbida
tarball 包括fbcon
支持 256 色 SGR 代码:
for (( i = 0; i < 256; i++ )); do
printf '\e[38;5;%dma\e[0m' "$i"
done
printf '\n'
答案2
不。
实际终端运行在视频卡的“文本模式”。有多种文本模式。由于历史原因,最大着色为 16 种颜色。很久以前,文本模式停止改进,取而代之的是图形模式。
因此理论上可以在文本模式下拥有 24 位颜色(真彩色),但您必须为此找到一个非常不寻常的硬件。