在铁器时代,编辑是可能的/etc/X11/rgb.txt
,瞧,X 服务器知道一些新颜色的新名称。
顺便说一句,imvho 这特别有用,因为rgb.text
数据库曾经(并且仍然)缺乏深色,并且基本上没有“编号的“深色。
不幸的是,现在 X 服务器使用内置版本的rgb.txt
,并且不关心文本文件。
是否可以在运行时更改 X 服务器的 RGB 数据库?
例如,当我需要一些不同色调的深红色作为用户界面的元素时,我可以附加到rgb.txt
以下行
63 31 31 OxBlood1
...
...
31 0 0 OxBlood4
答案1
或许。
X.org关于颜色名称的手册页说:
X 支持使用抽象颜色名称,例如“red”、“blue”。该抽象名称的值是通过搜索一个或多个颜色名称数据库获得的。 Xlib 首先搜索零个或多个客户端数据库;这些数据库的数量、位置和内容取决于实现。如果未找到该名称,则会在 X 服务器的数据库中查找颜色。
在客户端,如果服务器构建有 XCMS 支持,XLookupColor
从中读取色彩空间定义 Xcms.txt
,其中包含看起来的定义像这样:
XCMS_COLORDB_START 0.1
cms red CIEXYZ:0.3811/0.2073/0.0213
cms green CIEXYZ:0.3203/0.6805/0.1430
cms blue CIEXYZ:0.2483/0.1122/1.2417
XCMS_COLORDB_END
没有 XCMS(或者有 XCMS 但名称不匹配),客户端将请求发送到服务器,服务器通过循环初始化其颜色表静态表到预分配颜色由上游应用程序。没有代码可以在运行时触发颜色的重新分配。
这种情况已经有一段时间了:X.org移除了支撑rgb.txt
2007-11-05 的外部文件,以及记录下来于 2009 年 2 月 12 日。
在当代代码中,选项的总集似乎是:
- 如果您的构建具有 XCMS 支持,那么您可以使用命名的色彩空间定义来近似
rgb.txt
.这是与先前行为最接近的拟合。 - 您可以拨动进程内存并将分配的颜色替换为所需的颜色,但是Hic sunt 龙。
- 您可以自己构建服务器,用您的定义扩展表,或者恢复删除
rgb.txt
支持的提交。 - 您可以游说上游加入您的颜色,并希望他们纳入您的公关。