ICC Color Management helper app for Blender (and all other non-ICC-aware linux apps)

Having researched the possibilities of making Blender aware of the ICC profile of my monitor (and thus displaying accurate colors), I then discovered a Compiz plugin that actually takes the responsibility of converting the colors displayed by the non-ICC-aware application (assumed to be in sRGB color space, which is what Blender uses) to the color space defined by the monitor profile. This app is called compiz-cms: <https://github.com/gebner/compiz-cms>. Apparently work is underway to make it work for KWin and possibly other Window Managers under X11.

For KDE there is a plasmoid as Kolor isn’t there anymore, for Gnome there’s Gnome Color Manager in the repo of pretty much any distro and for all linux systems alike there’s ARGYLL CMS, which is great, it also supports colorimeters for calibration, in the repos as well and source available of course.


Yes I know all that. However, using this old system, it’s up to the individual apps to convert colors from their working color space to the monitor color space (using libraries such as LittleCMS), and apps who don’t do this conversion (such as blender) will be displaying colors directly on screen without conversion. Note also that calibration IS NOT THE SAME AS profiling. Calibration will set the white point, black point, correct gamma curves, etc. but will not give you color accuracy (i.e. a calibrated wide gamut monitor will stay wide gamut after calibration). So, Blender will never guarantee color accuracy with only a calbrated monitor.

Compositing Window Managers to the rescue. In such WMs, windows are not directly drawn to screen, but instead are drawn into a buffer which is then drawn to screen using hardware primitives (e.g. OpenGL). This allows for effects such as wobbly windows and desktop cubes, but also allows for color correction using, for instance, 3D lookup tables (LUTs). This allows the colors displayed by non-color-manged applications to be assumed as being (typically) in the sRGB color space (you will need to opt-out color-managed application windows - such as GIMP - from using such LUTs). Compiz-CMS is a plugin that does exactly that. You set the profile of the monitor (e.g. by using “dispwin -I mymonitorprofile.icc” - it’s in ArgyllCMS), activate the plugin, and you are done - perfect color management (at least from the display point of view) in Blender without changing a line of code.

Uhm what?
When you run argyll to load a profile it’s written in the graphics card LUT, at least with the proprietary nvidia drivers, and colors match even in Blender.
And if Blender saves png as tagged as sRGB the colors will match on the next persons calibrated screen as well if he respects the embeded profile.
What Blender and other unmanged tools can’t do is to convert the image color space to another space, for instance for your printer, or convert to another colorspace and embed it in the file.

But once the data is in the graphics card LUT, it’s used by everything using the LUT.


I am myself, in addition to be a computer programmer, a very geeky amateur photographer (amateur is defined as lack of money made from it, not lack of technical skills). I have done my own color-manged prints at home for a few months, and yes, I have a calibrated AND PROFILED screen. (At least with software such as ArgyllCMS), there is no such thing as “calibrating to sRGB” (as opposed to calibrating to an sRGB gamma curve, which is possible) with video hardware because hardware (as in video card) LUTs are typically 1D - i.e. they treat channels independently. They do not take into account gamut, which is the saturation and hue of the primitive R, G and B colors. The LUTs I mentioned in my previous post are 3D - three (3-dimensional) cubes (which correspond to displayed R, G and B) with each, for instance, 256 planes of 256 rows and 256 columns, (it’s usually less, like 64x64x64,due to the use of linear interpolation) the entries being, for instance, the sRGB values we want to display.

BTW, if you do not trust what I am telling you, here is a quote from <http://dispcalgui.hoech.net/>.

Even non-color-managed applications will benefit from a loaded calibration because it is stored in the graphics card—it is “global”. But the calibration alone will not yield accurate colors—only fully color-managed applications will make use of display profiles and the necessary color transforms.

Ah yes, I forgot. You can blacklist certain applications from using Compiz-CMS (it works on a window basis - remember that in a compositing WM applications display pixels to a buffer, with which we can do so much stuff). Firefox, GIMP, etc. are by default blacklisted, and thus they will use their own color management routines.

As for professional apps… Did you know that Adobe Premiere Pro CS5.5 is NOT color managed in any way!

most software work wrong - they do not respect gamma, they do not use CMS
this is also true for most commercial software from adobe or other…

blender is on other side a good software that work in linear color space -
but with missing CMS for max. perfection