Friday, September 19, 2008

Auto Switching Monitor Color Profiles


Recently I've tackled (and I believe conquered!) a problem that has been bothering me for quite some time. Here are some of the puzzle pieces:

My computer is a laptop - a Lenovo X60T - which I love with the exception of the screen. When I bought it I didn't realise there were different screen options otherwise I would have gone for the best one. As it is the screen is really fairly unusable for editing photos - it is too dim and if I increase the brightness everything goes overexposed. So, I use an external monitor for anything serious. 

I have one at work (viewsonic VA2026w) and one at home (Hannsg 19" standard). They are both fairly decent.

I have a friend who has a Huey Pantone monitor calibration device (http://www.pantone.com/pages/products/product.aspx?pid=79). Actually he recently upgraded it to the Pro version, which made dealing with my problem a bit simpler than it was before, as you will see in time. To those of you who are not familiar with these kind of devices, they have been around for a long time but have never before been this affordable. Basically the device will output an icc profile of your monitor actually based on what it reads from the monitor. During the calibration process it sits on your screen and and reads various tones and shades of color in order to build a profile that will make your monitor really display, for instance, red when the photo file says "this area is red" - rather than some kind of "off red". It is really quite indispensable if you are going to be doing much editing. In the past I have always used Adobe Gamma for this.

But... I go from home to work and am on the road with no external monitor in between. Do I calibrate the screen each time I arrive? Do I manually switch icc profile each time (Display Properties>Settings>Advanced>Color Management)? Well yes, I have tried both of those.

Here's the solution: a combination of the Presentation Director utility (hereafter known as PD) (that comes pre-loaded on Lenovo laptops (http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-67364) - I imagine other brands will have other equivalents) with the excellent "postcardware" utility xcalib (http://xcalib.sourceforge.net/).

The PD allows monitor profile switching. I press Fn-F7 and get a screen allowing me to choose which profile I want. For instance my home profile says, in basic: Extended desktop; external monitor is primary and to the right; 1280 x 1024 x 60Hz x 32bit; such and so background image; and lastly gives the option to run a program on profile switch. In my case I have chosen to run "hannsg.bat" - a simple batch file I wrote incase PD does not support command line options. The contents of the batch file is as follows:

xcalib hannsg.icc

Which is pretty simple. What I've done is make a folder called "auto color profiles" and put xcalib.exe there plus the icc profiles that Huey generates. With the Pro version you get to choose what you name each icc profile because it is designed to be used with multiple montors. A simple way to do this is open Display Properties>Settings>Advanced>Color Management, where you will see all the profiles Huey has made, and choose "Add". An explorer window will open showing all the icc profiles and from here it is easy to copy the ones you want (you'll have to wade through hundreds of generic ones to find the ones Huey made - so note the name of the one you want 1st) and then paste them into the "auto color profiles" folder you just created. Having the stuff in the same folder just means you don't have to worry about specifying the path for anything. To make things even easier you can rename the icc profile you want to something simple - like as above, "hannsg.icc". Less chars to type when making the batch file!

A batch file is really simple to make with notepad, or some other basic text editor. You can use wordpad but have to remember to "save as" "text document" which will remove all extraneous formatting. You can look up other things that batch files can do online but all this one does is run xcalib.exe and point it at the right icc file. Save as some simple name with a .bat at the end rather than .txt

At the end of the Huey calibration process you can choose whether or not you want the device to monitor room light and adjust the gamma accordingly. I don't know if this actually changes the .ICC files saved but I suspect it does and have therefore been choosing "no" which should give me a good default setting. The room light thing would be more consequential depending on how mcuh the light varies in your location. But without the device itself it is obviously of no use :)

With the non-pro version of Huey (cheaper) the work-around is to notice the name (huey makes one up automatically) of the default icc profile windows is using under "Color Management" and then hit the "Add" button, find that file name and copy it to your folder.

By the way, .ICM files are supposedly completely interchangeable with .ICC files.

At this point I've run the Huey tool on each monitor, including my laptop, and have copied the resultant icc file from each, and made a matching .bat file, and called that .bat file from the PD profile switcher. I switch profiles: resolution, background AND monitor calibration change to match.

It works like a charm. Or, for those unsuperstitious in our midst, a good deal better.

Of course over time you are supposed to re-calibrate your monitor. But I can borrow the tool again. And even when I own one I can't see myself taking it with me everywhere I go.

..To follow up, it is such a relief to plop the laptop down in the dock and have it switch profile automatically!

Here is the postcard I sent the author of xcalib: