[Openicc] Proposed "ucmm" display profile configuration convention used by ArgyllCMS.

Graeme Gill graeme at argyllcms.com
Wed May 14 02:10:47 PDT 2008


I've added a minimal CMM to ArgyllCMS to deal with persistent
display profile association using the scheme detailed as follows.
I know that at the moment this doesn't mesh with the scheme
Oyranos is using, but I don't think there is any documentation
for the latter, and was hoping that Kai-Uwe might use this
"straw man" to suggest a path towards some convergence,
perhaps by pointing out the differences.

I've written a small library to facilitate access to
the .jcnf files, that will be licensed under an "MIT" license,
that makes use of Lloyd Hilaiel's YAJL JSON parser, and takes
care of the necessary conversion to/from key/value form,
and file locking. The intention is to add this as a back
end to Elektra, to permit a common color configuration format,
while not tying color configuration to Elektra.

cheers,

Graeme Gill.

--------------------------------------------------------------
ucmm organization and conventions.

ucmm (Unix micro Color Management Module) is a color management module
designed just to handle the necessary configuration needed to track the
installation and association of ICC profiles with Unix/Linux X11 displays.

It consists primarily of a small configuration database that associates a
display monitor (identified by its EDID or the X11 display name if an
EDID is not known) with an ICC Display profile.

This configuration has two configuration contexts, local system and per user,
the latter taking precedence when both are present.

ucmm follows the XDG Base Directory specifications
<http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html>
for the location of the configuration file and display profiles.

For the local system context, the ucmm configuration file is located at:

       $XDG_CONFIG_DIRS/color.jcnf
or   /etc/xdg/color.jcnf

and display profiles are stored in

       $XDG_DATA_DIRS/color/devices/display/
or   /usr/local/share/color/devices/display/

For per user contents, the ucmm configuration file is located at:

       $XDG_CONFIG_HOME/color.jcnf
or   $HOME/.config/color.jcnf

and display profiles are stored in

       $XDG_DATA_HOME/color/devices/display/
or   $HOME/.local/share/color/devices/display/

The configuration format of the color.jcnf files uses the
JSON JavaScript Object Notation <http://www.json.org/>,
a lightweight data-interchange format.

A hierarchy of members is used to represent a hierarchical key/value pair format.

The monitor to ICC profile association is organized as independent records, having the form:

   key                                value

   devices/display/N/EDID             Monitor EDID  in upper case Hexadecimal
   devices/display/N/ICC_PROFILE      Full path to the associated ICC profile

or

   devices/display/N/NAME             X11 display name
   devices/display/N/ICC_PROFILE      Full path to the associated ICC profile

where N is a number starting from 1, that distinguishes each record, but otherwise
has no special meaning.

The first form is the preferred form, since it associates the profile with
the actual physical display, and therefore it is possible to have the profile track
the display, no matter which X11 screen it is plugged into. The second
form is a fallback, for situations in which a monitor does not have an
EDID, or where the X11 server is configured in a way that does not
permit access to the EDID (i.e.., on a second screen when Xinerama is running).

For example, the following is an example of a per user color.jcnf:

{
   "devices": {
     "display": {
       "1": {
         "EDID": "0x00FFFFFFFFFFFF0034A1731751720000150901010C1F17CDE8A11E9E554A982712474FA4CE0045598180315961590101010101010101000000FE004D6F6E69746F720A2020202020000000FE004D6F6E69746F720A2020202020000000FE004D6F6E69746F720A2020202020000000FE004D6F6E69746F720A2020202020003D",
         "ICC_PROFILE": "/home/graeme/.local/share/color/devices/display/mon1.icc"
       },
       "2": {
         "NAME": ":0.1",
         "ICC_PROFILE": "/home/graeme/.local/share/color/devices/display/mon2.icc"
       }
     }
   }
}

---------------------------------------------------------------------------------


More information about the openicc mailing list