X 的新颜色

X 的新颜色

在铁器时代,编辑是可能的/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.txt2007-11-05 的外部文件,以及记录下来于 2009 年 2 月 12 日。

在当代代码中,选项的总集似乎是:

  1. 如果您的构建具有 XCMS 支持,那么您可以使用命名的色彩空间定义来近似rgb.txt.这是与先前行为最接近的拟合。
  2. 您可以拨动进程内存并将分配的颜色替换为所需的颜色,但是Hic sunt 龙
  3. 您可以自己构建服务器,用您的定义扩展表,或者恢复删除rgb.txt支持的提交。
  4. 您可以游说上游加入您的颜色,并希望他们纳入您的公关。

相关内容