I'm working in my loft these days, which doesn't get any direct sunlight. This is great for strain of eyes -- no harsh glare and such -- but not so good for my body's circadian clock, which doesn't have read access on /dev/rtc. I came up with a idea yesterday that I hope will work.
I've used "floatbg", the root window color changer for X, a long time. It's neat that it changes the colors imperceptably on a small scale, but that if you notice your desktop on the scale of 20 minutes, it's a completely different color. It slowly plots a sine-wave through a HSV color wheel, where the hue is time and the saturation is the height of the sine. The value is fixed at start of execution ...until now.
I added an option to change the value setting to be also a function of time, but in the sense that it tries to mimic the amount of light that the sun casts onto the earth based on your system's response to localtime(). At night, the colors are muted and dark shades of gray. At 7AM, the background begins to lighten, peaking at noon with bright pastels, and tapering off through the range of colors, until 7PM, when it's back to "night colors".
Hopefully, this will help my subconcious. It was easier than hacking my medulla oblongata. I _hate_ hardware.
I sent the patch to the original author, but his 14 year-old email address bounced, so I CC'd the Debian maintainer too. Maybe it will be in the next general release, so all we dark-cave hackers won't be so screwed-up by our habits.
I'd paste the source here, but that'd be rude.
Next, maybe I'll see if I can make my window decorations do something similar. I'm using sawfish, and nearly anything is possible when a program holds a built-in Lisp interpreter.