colord, color management framework for Linux, sees stable release
Richard Hughes has just announced the first stable release of colord, a system service for managing, installing and generating color profiles to accurately preserve color fidelity between input and output devices.
If you are wondering, when you are ever going to see colord yourself, you shouldn’t be. colord has been an integral part of any GNOME-based distribution for the past few years, and KDE-based distributions like Kubuntu are shipping it as well.
The project started in late 2010, a year later after successful launch of GNOME Color Manager. The rationale for colord initially was to provide a simple system-level tool for mapping ICC profiles to devices. It was later extended to handle generation of color profiles as well.
The daemon extensively uses dictionary tags in ICCv4 to write metadata about profiles and devices for simple automatic matching between them (e.g. see what settings user picked for printing, then autoselect the required profile). The written metadata corresponds to a subset of the specification that was worked on by OpenICC community along with extra colord-specific metadata.
Improving the imaging stack
Early on the work on colord required patching the entire printing stack on Linux, including CUPS, Ghostscript, Foomatic and GTK. All these projects now officially support colord. As for 3rd party applications, dispcalGUI (color profiling app) and darktable (digital photography app) already are colord-friendly, and the colord session clients additionally set the _ICC_PROFILE X atoms for other color managed programs.
Most recently Richard Hughes added support for colord to Weston, new display server that uses the Wayland protocol, and provided a patch to add pluggable color management modules, with colord being the first such CMM. The former patches have already been applied to upstream development branch, the last patch currently pending final review.
What it means is that Weston, the next display server for Linux, is now color managed, and is done in a way that doesn't make arbitrary desktop environments depend on colord. While desktop users that use GNOME and KDE can keep using gnome-settings-daemon and colord-kde for managing profiles, there is still the possibility to set a hardcoded per-device ICC profile using weston.ini.
The ultimate goal of adding color management support to Weston is hardware accelerated fullscreen color management. Richard explains:
Individual programs won't have to care about color management directly. As it's Wayland and not X, we can define CM in the protocol itself, so we can have a very high level API for applications such as GIMP and darktable to say "do not color manage this widget" or "this widget has an input space of Richards Nikon D60". By designing CM into the protocol we can make it very efficient and all compositors will support it without any additional work or hacks like was suggested for X11.
Weston and Wayland won't substitute X.org tomorrow or next week, though. While some toolkits like GTK+ already support the new protocol, only about 50% of GNOME applications can run on the Wayland backend right now. Richard is currently working on getting gnome-settings-daemon and gnome-control-center running on Wayland, but doesn't expect full GNOME (i.e. the shell) to run on Weston/Wayland before next year.
While working on adding support for generating color profiles, Richard needed to find a way to streamline interaction with color sensors such as Colorvision Spyder, X-Rite Colormunki etc. The developer ended up creating a colord native backends for a few devices he had at his disposal.
Right now colord has native backends for the following devices:
- Pantone Huey
- X-Rite ColorMunki
The latter is an open hardware colorimeter designed and assembled by the Hughes family (plus wife, minus toddler).
What's new in v1.0
Among various improvements and bugfixes colord 1.0 features a public API for pixel conversion between various combinations of RGB and CMYK using LittleCMS v2. It's designed for simple color processing of small images. Advanced things like device-link profiles are out of scope. Richard intends to use the abstract profile support in the GTK3 print preview for GNOME 3 and in other GNOME projects.
According to Richard, the release of colord 1.0.0 marks the completion of core functionality that was envisioned for at the project outset. Whilst the colord-1-0 branch will continue to accept bugfixes, the master branch will continue to merge new features, including:
- a better colormgr command line tool;
- a more efficient and faster session calibration assistant;
- more native drivers, the next being the i1disp range of hardware;
- a compatibility library to be used by ArgyllCMS to use on Linux in preference to ucmm.
For now, expect the new version of colord to land to your Linux distribution of choice in the next couple of days.