MacOS – How to adjust the apparent color temperature of the display in OS X

colordisplaymacos

I really like f.lux, which is an app that automatically adjusts the display's apparent color temperature according to the time of day and location (so that the temperature is in sync with Sun).

How to set the color temperature manually? I.e. without f.lux?

Sometimes I'd like to have "tungsten" (2700 K) colors during the day or morning, which would require fiddling with the location coordinates in f.lux. Sadly, there's no "manual mode" that I'm aware of.

I'm looking for a OS X native / software based solution, that would allow me to set white point below 4500 °K, which is the minimum that Color Calibrator can set. Is this even possible?

Best Answer

This solution requires F.lux to be installed (I assume it's at /Applications/Flux.app).

Create a text file (let's call it flux-day-color) and put it in /usr/local/bin (usr is under "Macintosh HD" and may be hidden).

#!/bin/bash

if [[ ! -z "$1" && "$1" -ge 2700 && "$1" -le 6500 ]]; then
  defaults write org.herf.Flux dayColorTemp -int "$1"
  killall Flux
  open /Applications/Flux.app
else
  echo "provide a temperature between 2700 and 6500 (rounded to nearest 100)"
fi

In Terminal, run chmod 755 /usr/local/bin/flux-day-color

Now you can run flux-day-color 2700 in Terminal (or in another script) to change the day temperature. Note that the script restarts F.lux so you may see the display jump to 6500 K for a split second before applying your requested temperature.

It's also possible to schedule this to run at predefined intervals, but that's beyond the scope of this answer (and the question).

If you'd rather have a launchable app that can toggle between 2 temperatures,

Open Terminal and run these commands:

bash
cd /Applications/
mkdir -p flux-day-toggle.app/Contents/MacOS
cd flux-day-toggle.app/Contents/MacOS
cat <<END > flux-day-toggle

Now you'll see a greater than sign. Paste this:

#!/bin/bash

DOMAIN=org.herf.Flux
KEY_NAME=dayColorTemp

LOW=2700
HIGH=6500

cur_val=`defaults read $DOMAIN $KEY_NAME 2>/dev/null`
if [[ -z "$cur_val" || "$cur_val" -eq "$HIGH" ]]; then
  new_val=$LOW
else
  new_val=$HIGH
fi

defaults write $DOMAIN $KEY_NAME -int $new_val
killall Flux
open /Applications/Flux.app
END

Wait for the prompt to appear, meaning the file was written. Now the finishing touch:

chmod 755 flux-day-toggle

Now you can launch the new app. You can customize the LOW and HIGH settings to your liking.