Running Redshift commands from crontab, doesn't work

5

About redshift:

Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night.

A typical redshift command is redshift -O 9999 which sets the screen color temperature at 9999K. Following a polyphasic sleep schedule, i want to change my screen color a few times a day.

So here's part of my crontab:

LOW='redshift -O 1000'
HIGH='redshift -O 9999'

30 4 * * * $LOW
45 12 * * * $LOW
45 20 * * * $LOW
0 6,15,23 * * * $HIGH

It doesn't do anything. I checked the syslog, it does run, but when i catch the output in a file, the file is empty.

Why does this not work? Are there any alternatives to Redshift i can try?

ToonAlfrink

Posted 2013-07-16T23:54:52.747

Reputation: 111

2Commands ran from cron don't have the shell environment variables such as DISPLAY set. Consider what happens when you replace your command in cron with env. You need to set the DISPLAY variable. – Dan D. – 2013-07-17T00:14:49.263

Answers

5

Thanks Dan D. This worked:

LOW='redshift -O 1000'
HIGH='redshift -O 9999'
DISPLAY=:0.0

30 4 * * * $LOW
45 12 * * * $LOW
45 20 * * * $LOW
0 6,15,23 * * * $HIGH

ToonAlfrink

Posted 2013-07-16T23:54:52.747

Reputation: 111

how did this work? Didn't the comment from Dan D. say cron doesn't work for redshift? – xdavidliu – 2018-03-13T17:17:43.343