ICC Profiles In X Specification

Ross Burton

Opened Hand Ltd
Revision History
Revision 0.22007-02-20

Specify how to handle Xinerama setups (Kai-Uwe Behrmann).

Revision 0.12005-06-24

Initial release. Thanks to Craig Ringer, Jim Gettys, Kai-Uwe Behrmann, and Matthew Allum for feedback.


Table of Contents

Introduction
Specification
_ICC_PROFILE
References

Introduction

This is a specification for associating ICC1 colour profiles with X screens. With this specification applications can obtain the appropriate display profile for the screen they are on, and apply colour correction to any images which are being shown to the user.

Specification

Currently there is only one atom base name defined.

_ICC_PROFILE

The _ICC_PROFILE atom is set on the root window of the default (first) screen.

For root windows spanning more than one screen, as typical in Xinerama multihead configurations, an atom for each screen is added holding the appropriate ICC profile. All screens in a root window starting from number one use _ICC_PROFILE as the atom name extended with an underscore plus the screen number, e.g. _ICC_PROFILE_1.

The atoms are of type XA_CARDINAL with 8-bit elements. The value of the atom should be a literal ICC profile, that applications can read and parse directly.

This property does not have to be set on every screen. When this property is not set on a screen, the screen is uncalibrated, and no colour correction for display should be done.

As profiles can be large applications should read the profile for a particular screen once, and cache it. As a screen's profile may change during the lifetime of the process, applications should ask to receive property change notifications from the root window, even if they don't currently have a profile set. Applications which can change screens using mechanisms such as display migration should be aware that the new screen is likely to have a different profile.

References