配置 VGA 颜色 Linux(ubuntu)

配置 VGA 颜色 Linux(ubuntu)

Ubuntu 终端的颜色“错误”。是否可以让它使用正确的 VGA 颜色。为了进行比较,下面是显示两个虚拟机的屏幕截图:一个 Xubuntu 16.04(上),一个 Windows 98(下)。我期望在控制台设置中看到一些选项,但这仅涵盖字体和字符编码。

控制台比较

答案1

Linux 虚拟控制台基于 VT102 和 ECMA-48 终端控件。console_codesconsole_ioctl手册页提供了更多信息。您可以使用以下命令查看当前使用的颜色:

$ cat /sys/module/vt/parameters/default_{red,grn,blu}
0,170,0,170,0,170,0,170,85,255,85,255,85,255,85,255   # .../default_red
0,0,170,85,0,0,170,170,85,85,255,255,85,85,255,255    # .../default_grn
0,0,0,0,170,170,170,170,85,85,85,85,255,255,255,255   # .../default_blu

这些给出了主要终端颜色的 RGB 值(8 个正常颜色,8 个明亮颜色),以逗号分隔的格式(来自setvtrgb手册页):

# default_red:  color0_R,color1_R,...,color15_R
# default_grn:  color0_G,color1_G,...,color15_G
# default_blu:  color0_B,color1_B,...,color15_B

+--------+--------+---------+
| Normal | Bright | Color   |
+--------+--------+---------+
|      0 |      8 | Black   |  
|      1 |      9 | Red     |  
|      2 |     10 | Green   |
|      3 |     11 | Yellow  |
|      4 |     12 | Blue    |
|      5 |     13 | Magenta |
|      6 |     14 | Cyan    |
|      7 |     15 | White   |  
+---------------------------+

要更改它们,首先我们需要将这些值保存到文件中:

$ cat /sys/module/vt/parameters/default_{red,grn,blu} > ~/myconsolecolors

现在使用基本的文本编辑器调整颜色,并使用 加载更改。Ubuntu 会在以下setvtrgb位置安装该工具:/sbin/setvtrgb韋斯特包裹。

$ setvtrgb ~/myconsolecolors

一旦一切顺利,您需要在系统启动时运行它。我会将您的自定义颜色文件复制到以下方便的位置/etc/

$ sudo cp ~/myconsolecolors /etc/custom-vt-colors

然后创建一个systemd单元来运行它:

$ sudo nano /etc/systemd/system/custom-vt-colors.service

[Unit]
Description=Load custom VT color palette

[Service]
Type=oneshot
ExecStart=/sbin/setvtrgb /etc/custom-vt-colors

[Install]
WantedBy=multi-user.target

最后,启用并启动服务:

$ sudo systemctl enable custom-vt-colors.service
$ sudo systemctl start custom-vt-colors.service

答案2

@quixotic 的回答非常透彻且正确,非常感谢 quixotic!

然而,我发现在 Ubuntu Mate 19.04 中,它被覆盖了。本质上,已经有一个通过 加载文件的服务setvtrgb,并且加载得很晚。

/etc/vtrgb我所做的就是按照从到 的链接/etc/console-setup/vtrgb。编辑或替换/etc/console-setup/vtrgb,保留相同的名称,一切都应该正常工作,正如 quixotic 所描述的那样。

(注意: setvtrgb.service从 加载链接文件的/etc/vtrgb位于/lib/systemd/system/。)

相关内容