ICC Profiles and GNOME

I’ve got a multi-monitor setup here, with my T61 being my primary display, and a 28″ LG flatpanel as my secondary display.

I also take a lot of photos, and do editing in GIMP and Rawstudio and have noticed the colours on the LG are very different to the colours on the T61 screen. And when I print them, they bear little resemblance to what I just saw on screen. I’m almost thinking of buying a macbook and OSX just so I can actually see the colours I’m about to print. Heck, even Windows XP does things better than Linux does now.

I’ve done quite a bit of research, and found the general state of colour profiling to be, well, pretty hardcore, and in GNOME practically unusable. I can set my xgamma table using xcalib or dispwin, but this isn’t aware of xrandr setups and only applies the profile to a single screen. It’s certainly not a persistent setting or easy to figure out as it’s not installed by default.

In an ideal world I would visit System->Preferences->Color calibration (which is installed by default) and then either import the .icm file I’ve downloaded from the manufacturers website, or click a button and calibrate my display using an external calibration device. Certainly no commands on the root prompt, or typing in a bunch of hex.

So what am I thinking:

  • A gnome-settings-daemon plugin that applies ICC profile when a monitor is attached (or just integrate with existing xrandr plugin)
  • A gnome-color-calibration configuration UI that lists the attached output devices and allows you to associate profiles with them
  • Available colour profiles installed system-wide and also in the users home directory
  • One click calibration using supported devices (for instance ColorVision Spyder2)

Now, this colour problem is very complicated. There’s lots of work in applications to support other colourspaces and profiles and lots of very clever colour libraries (e.g. ArgyllCMS or lcms) but not a lot of work is being done to actually make this usable on the desktop.

Now, I’m very short on time these days, but would be very willing to co-maintain a project (or join an existing one) if other people are interested in this. I’ve got more than enough work to do with PackageKit, DeviceKit-power, and gnome-power-manager but I can spare a few hours a week to this as I think it’s a very important problem to solve. If it’s annoying me with my photography hobby, then it’s got to be a really big deal for professionals trying to use Linux. So, anyone interested?

Published by


Richard has over 10 years of experience developing open source software. He is the maintainer of GNOME Software, PackageKit, GNOME Packagekit, GNOME Power Manager, GNOME Color Manager, colord, and UPower and also contributes to many other projects and opensource standards. Richard has three main areas of interest on the free desktop, color management, package management, and power management. Richard graduated a few years ago from the University of Surrey with a Masters in Electronics Engineering. He now works for Red Hat in the desktop group, and also manages a company selling open source calibration equipment. Richard's outside interests include taking photos and eating good food.

13 thoughts on “ICC Profiles and GNOME”

  1. Have you tried dispcalgui ?


    But at the end we (gnome users) really need to have a simple tool to manage icc profil in system, and to be sure that icc profil is not lost for any reason (change screen size, sleep, screensaver etc.)

  2. I use ArgyllCMS regularly and find it works pretty well. However, integration of calibration and profile setting in a simple configuration UI would be really useful for those not wanting to use the command-line. I would say that setting a persistent profile for a display, and possibly one-click calibration would be nice. If you have ever seen commercial colour management software for Windows or Mac OS X, you will find that it is in general quite simple, so it would be possible to create a UI for ArgyllCMS or similar without too much effort.

    I have an i1 Display colorimeter that works well and gives good profiles, and an HP Z3100 printer. Using the manufacturer-provided colour profiles is not much use in my experience, and I have generated display and printer (really paper) profiles that give vastly different (and better) results than the manufacturers profiles. Using these together I can soft proof with UFRaw and GIMP, and get exactly the colours that I desire from prints (although I have to print using Windows XP as there are no drivers for the Z3100 on Linux, alas).

    1. This is correct about Oyranos being a color management specific setting frame work. The OpenICC group has been working on this for some time and has had 3 related Google Summer of Code projects. This is actually more advanced than just creating color management settings for monitors and it includes printer, cameras and scanners as well.

      In addition one of the OpenICC GSoC projects was to create a KDE front end for Oyranos as an example of how this would look/work. This is named Kolor Manager and is available in the playground section of KDE SVN. Work on this is still underway but it is hoped that it will be ready for KDE 4.4. OpenICC would like to have someone create a GNOME specific version of this at some point.

  3. Stumbled upon exactly the same thing with my multi-head setup.
    Infact for basic functionality, the work is quite straightforward and I proposed it for GSoC’08.

    A gnome-color-management UI could let you select the ICC profiles found in the search path (/usr/share/color/icc, /usr/color/icc, ~/color/icc, …) for a specific display. Code needed to actually read data out of the profile (to display in the UI perhaps with some fancy LUT graphic) and to apply it to a display could actually be taken from xcalib.

    Regarding applications and profiles. Forget that for now. The whole topic is also not given priority further down the stack as there is still talks how/where to apply ICC profiles to [1] and how XRandR/Xinerama should behave.

    A simple profile selector should happen first which applies a profile on session start and that would already fill a big hole. Integration with applications and calibration devices should come later, however some applications already have their own code for profile management.

    [1] http://www.oyranos.org/wiki/index.php?title=ICC_Profiles_in_X_Specification_0.4

  4. In an ideal world, the xserver would just do the right thing based on the EDID data the display is sending, without any gui or config app whatsoever.

    1. These ICC profile are hardware specific and to set this up correctly the profiles need to be custom made for the specific hardware. How could the system figure out how to match the profiles to the hardware without the user specifying this in some type of configuration system/app?

  5. You can query the monitor with read-edid, this contains what make/model your monitor is. With a web service you could perhaps either automatically download, or failing that provide the user with a url to the web page where they could download them.

    1. The EDID also contains the monitors serial number. Oyranos uses the make/model/serial number from the EDID to identify the monitors connected to a system. The reason that “..either automatically download, or failing that provide the user with a url to the web page where they could download them” will not work is that no website in existence will ever have the correct profile for YOUR monitor. At best these web sites will have a generic profile that is correct for only the monitor that was used to create it.

      Remember these profiles are hardware specific and are individual to each device because of sample to sample variations.

    1. There has been lots of work going on in this area. Everyone interested should be part of the OpenICC group. The work on the KDE side is much farther along than on the GNOME side and the OpenICC group would be very happy to have more participation from the GNOME side.

      I should add that there is work underway on the printing side (CUPS and GhostScript, common print dialog, Oyranos interation…) to have full CM support for printing. OpenICC has been working with the OpenPrinting group on this for about 2 years now.

  6. I have been using ArgyllCMS using a DTP-94 (still available from Integrated Color Corp for $150) along with dispcalGUI as the GUI. This works very well. Previously, I used ArgyllCMS from the command line with good results.

    I’m not sure the DTP-94 is still a good choice, it works well with CRTS and LCDs, cannot profile printers or scanners, but may not have the sensing range to fully do one of the newer wide gamut LCDs. It works fine with my monitor which covers about 94% of Adobe RGB.

    I would think that having GNOME adapt a “normal” method for installing profiles such as those provided from the manufacturer for monitors, printers, and scanners would be an excellent start towards a standard color management method.

Comments are closed.