Color management

Color management at its simplest definition is computer technique for ensuring colors stay the same or at least as close as possible between devices. Colors may differ due to different physical characteristics between devices and even imperfections between displays of the same model and ageing of a display.

Basic theory behind computer color
Despite the title of the section basic grasp of RGB is assumed until someone writes about the basics here.

Shortcomings of RGB
More fundamentally RGB is a relative scale that most commonly has a mere 256 states per channel which is largely insufficient to represent the vividness of the real world. For better or worse our eyes see the world in a logarithmic fashion with greater distinction between darker tones. This can be exploited to avoid encoding many bright tones that seem roughly the same to humans. Nevertheless color management and using the correct gamma function are not the same thing although both are required for correct end results.

Another issue is the aforementioned relativity where the color space is defined by the display characteristics, meaning that #FF0000, #00FF00, #0000FF and by extension #FFFFFF are in fact different tones from device to device.

sRGB
sRGB is Microsoft's attempt at fixing shortcomings of RGB, chiefly lack of absolute reference points and clarifies which gamma curve to use. On the down side, that curve itself is non-linear, adding complexity to proper sRGB support. Despite this sRGB is the de facto standard for RGB24/32 images and if it lacks a color profile then sRGB is the safest bet for files produced in the past 15 or so years.

Color management systems (CMS)
On Linux the two main solutions for display color management are Oyranos and colord.

KDE (Plasma 5)
Enable the  USE flag and rebuild the world set. Emerge to provide interfaces and session daemon to colord. can be used to calibrate the devices instead of Gnome Color Management as noted in KDE Plasma application System Settings -> Hardware -> Color Corrections.

GNOME
Enable the  USE flag and rebuild the world set. For at least non-lite version of GNOME that should be all that is required.

GIMP
In theory GIMP has had color management for a bit longer than most applications, but if someone understands how to configure it to work properly with a CMS, go ahead, till then consider it broken.

Firefox
Go to and set gfx.color_management.mode to 1 from the default value of 2. This will make Firefox treat untagged images as sRGB which generally is what you want. For best results also install a color management system or alternatively set the gfx.color_management.display_profile to the correct file. Naturally, this will not work with two displays.

mpv
When using mpv's OpenGL presentation driver (not the legacy one inherited from MPlayer!) it's possible to configure it to always output sRGB which usually is already the case but could not be the case for nowadays more exotic or old content. Alternatively when built with LittleCMS support the same OpenGL presentation driver can also do full color management including with profile set in window properties but currently it will not tag the surface appropriately so care should be taken that the display color manager does not apply the display color profile again.

For detailed description see the article on mpv.

External resources

 * https://www.youtube.com/watch?v=LKnqECcg6Gw - MinutePhysics video on non-linear gamma curves and why it's important to get them right (YouTube)
 * https://en.wikipedia.org/wiki/Gamma_correction - Wikipedia article on gamma correction
 * http://www.oyranos.org/2013/03/firefox-19-0-colour-management/ - Oyranos blog article on Linux color management
 * https://encrypted.pcode.nl/blog/2012/01/29/color-management-on-linux/ - A blog post on Linux color management

TODO

 * Color calibration section or even an outright article as it's probably complicated enough on its own on Linux.
 * More applications such as Inkscape, Blender and other graphics processing tools.