Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I created 288 different earth renders depending on sun position (one for every 5 earth minutes) based on this file from blendswap. It the image sequence starts at noon and ends at noon. I would like to set at each time of day the correct image as background image on OS X (eg at 12.00 it should be image No 1 at 18:00 it should be image No 72 ). How could I do that.

(The Original Idea was to use the "change background image every 5 minutes" setting in OS X background settings, but it only changes the picture if the computer is awake. Therefore the sequence would be out of sync every time I shut down the computer

btw I uploaded the Files

https://dl.dropbox.com/u/19023009/Blender/background.zip

They are at full Retina resolution at 650MB. + blendfile + license.

share|improve this question
    
Can you please revise your question to clearly state the problem you are trying to solve? As it's written now, it doesn't really make sense. –  patrix Jul 23 '12 at 8:01
    
yep you are right and there is even a error in my thought –  miceterminator Jul 23 '12 at 8:42
    
You want a third party app suggestion which can do this or you want to write a script for this ? –  iGameRam Jul 23 '12 at 9:58
    
I would rather write my on script, I found some third party apps myself already but I don't believe it would be to hard to do it myself. I already now how to change a background image with applescript (at least I believe) the interesting part is to execute it every 5 minutes according to system time –  miceterminator Jul 23 '12 at 10:04
    
I think I am going to mix this together with the automator action of changing the background –  miceterminator Jul 23 '12 at 10:15
show 4 more comments

3 Answers

This might be an unfortunate answer, but i'd suggest making a Quartz composition for this, turn it into a screen saver, and use one of many available tricks for running screen savers as a wall paper.

share|improve this answer
    
Good idea in general,I would need to look how I can make a time dependent screensaver. –  miceterminator Jul 24 '12 at 9:07
    
Quartz Compositor probably has goodies in the library for tracking time (can't confirm right now) –  XAleXOwnZX Jul 24 '12 at 12:48
    
Just finished the Applescript. I am going to add a launchd job to run the script every 5 minutes –  miceterminator Jul 24 '12 at 13:34
add comment

Thank you for your input

So finally I managed to do it (at least I think so)

I embedded an Applescript to change the background in a shell script which I added it to launchd.

This is what it looks like:

Script "scriptly.sh"

#!/bin/bash
osascript -e '
set myhour to get the (hours of (current date))
set myminutes to get the (minutes of (current date))
set mypicturenumber to (myhour - 12) * 12 + myminutes / 5 as integer
if mypicturenumber < 0 then
    set mypicturenumber to (288 + mypicturenumber)
end if
set picnumber to 0
if mypicturenumber > 99 then
    set picnumber to "0" & mypicturenumber
end if

if (99 ≥ mypicturenumber) = (9 < mypicturenumber) then
    set picnumber to "00" & mypicturenumber
end if
if 9 ≥ mypicturenumber then
    set picnumber to "000" & mypicturenumber
end if
tell application "Finder"
    set desktop picture to {"Macintosh HD:users:USERNAME:Individualfile:backgrounds:earth:earth24h" & picnumber & ".png"} as alias
end tell
'

launchd file "com.individual.Background.plist"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.individual.Background</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/Users/USERNAME/Individualfile/scriptly.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
    <key>UserName</key>
    <string>USERNAME</string>
</dict>
</plist>

command to put it in action

launchctl load /Users/USERNAME/Individualfile/com.individual.Background.plist

EDIT:

The last command is there to load the script directly, however It will not be executed on startup. To do That you have to copy the file

com.individual.Background.plist

to the ~/Libary/LaunchAgents/ folder.

share|improve this answer
    
The third condition in the script looks wrong. You could also run the AppleScript directly with something like <string>osascript</string><string>/Users/username/script.scpt</string>. The UserName key is not needed in per-user services saved to ~/Library/LaunchAgents/. –  Lri Jul 25 '12 at 0:38
    
Thanks for that, it told me in the console, that it the private key was not necessary and would be ignored, so I didn't change it. And the I wasn't sure if I could launch it directly with osascript, because osascript was throwing errors because of some permission to change user things when I ran it from the commandline –  miceterminator Jul 25 '12 at 8:01
add comment

Here's a shorter version of the script:

#!/bin/bash

n=$(((($(date +%H)-12)*12)+$(date +%M)/5))
[[ $n -lt 0 ]] && n=$((n+288))
n=$(printf %04d $n)

osascript -e "tell app \"Finder\" to set desktop picture to POSIX file \"/Users/username/Desktop/background/earth24h$n.png\""

You could run the script every five minutes by editing the crontab with EDITOR=nano crontab -e and adding a line like */5 * * * * ~/script.sh. Unlike the LaunchAgent, it wouldn't be run after waking up from sleep though.

share|improve this answer
    
nice shell coding. I don't have that kind of skill level. –  miceterminator Jul 25 '12 at 8:04
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.