Previous 1 2 Next 21 Replies Latest reply: Aug 12, 2009 8:36 PM by G J Piper
G J Piper Level 1 Level 1 (90 points)
Ok... so I've been waiting, watching, and searching for a transparent screensaver that could work in Leopard for nearly 3 years. Well, I finally found one! The screensaver is called MBS Transparent Screensaver. Finally I'd get to see my wonderful desktop pictures and watch my email while the screen is locked!

Well, after finally getting this functionality, I've been disappointed by the realization that the desktop pictures do not rotate automatically while a screensaver is running.

Is there any way to force the desktop pictures to rotate as they do when the screensaver is not running? Possibly an undocumented setting somewhere? Or, is there any UNIX command that can cause the desktop to refresh to the next image in the rotation?

Any ideas or help would be appreciated.

24" iMac 2.8 C2E / 1TB / 4GB, Mac OS X (10.5.8)
  • Dave Hamilton Level 5 Level 5 (6,820 points)
    Have you tried this?

    Go to System Preferences, Desktop and Screensaver.
    Select Screensaver, then from the list of available screensavers, select Pictures -> Choose Folder.
    Select the folder that contains your desktop pictures.
    Click the "Show All" button to get back to the full set of System Preferences.
    Go to Security -> General.
    Check "Require password to wake this computer from sleep or screen saver".
  • G J Piper Level 1 Level 1 (90 points)
    This is a picture rotating screensaver, but it is not what I am looking for, for two reasons:

    1) I have a dual monitor, and have 2 folders set up with identically named desktops cropped to each monitor's size. They rotate "in sync" with each other so I can have huge multi-monitor pictures that rotate on my desktop every 15 minutes. Using the Picture rotator screensaver will not allow me to sync the monitors to have the same picture like I can with the desktops. Here is a link showing how it looks for better reference: http://blog.panedia.com/2008/09/23/wallpaper-user-profile-greg-p

    2) I have a transparent screensaver not only for viewing my desktop photos, but also for viewing my email or apps even with the screensaver locked.
  • AJ Level 5 Level 5 (7,075 points)
    I think the screensaver selects pictures in alpha-numberic order.
    So if the files in the source folders are not the same, then that may explain why the pictures don't match.
  • G J Piper Level 1 Level 1 (90 points)
    I'm not interested in a new screensaver. The transparent one I described in the first post is perfect. The operating system, however, does not rotate desktops while a screensaver is running. I'm looking for a way around this — to force the desktops to rotate like they usually do. (Not a screensaver that rotates pictures, but the actual desktop)

    PS: The picture rotation screensavers built-in to OSX do not display pictures in order, but random pictures, so they would never match anyway. It also won't let you choose a different folder of pictures for the left and right monitor. Also, the pictures I have are named perfectly, and they do load in order as desktops. My problem is not the order of the pictures, nor that I need a different screensaver, because I don't. But, again... this is irrelevant to my original post.
  • V.K. Level 9 Level 9 (56,110 points)
    G J Piper wrote:
    Ok... so I've been waiting, watching, and searching for a transparent screensaver that could work in Leopard for nearly 3 years. Well, I finally found one! The screensaver is called MBS Transparent Screensaver. Finally I'd get to see my wonderful desktop pictures and watch my email while the screen is locked!

    Well, after finally getting this functionality, I've been disappointed by the realization that the desktop pictures do not rotate automatically while a screensaver is running.

    Is there any way to force the desktop pictures to rotate as they do when the screensaver is not running? Possibly an undocumented setting somewhere? Or, is there any UNIX command that can cause the desktop to refresh to the next image in the rotation?


    the only way to achieve this would be pretty hacky. you'll have to switch off the picture rotation in desktop background preferences and make an apple script that changes the background picture to a random one in a folder of your choice. then make a launch daemon to run this apple script periodically. do you REALLY want to go through this? I can supply the details if you wish.


    Any ideas or help would be appreciated.
  • G J Piper Level 1 Level 1 (90 points)
    V.K. wrote:
    the only way to achieve this would be pretty hacky. you'll have to switch off the picture rotation in desktop background preferences and make an apple script that changes the background picture to a random one in a folder of your choice. then make a launch daemon to run this apple script periodically. do you REALLY want to go through this? I can supply the details if you wish.




    Yes. I'm up for it. Only, not a random picture, but rather "in order" alphabetically. Is this possible?
  • V.K. Level 9 Level 9 (56,110 points)
    ok, this took longer than I thought because it seems that scripting of desktop background is a bit buggy. anyway. paste the following into Script Editor and save it as a script somewhere.

    <pre style="
    font-family: Monaco, 'Courier New', Courier, monospace;
    font-size: 10px;
    margin: 0px;
    padding: 5px;
    border: 1px solid #000000;
    width: 720px; height: 335px;
    color: #000000;
    background-color: #ADD8E6;
    overflow: auto;"
    title="this text can be pasted into the Script Editor">

    delay 10
    tell application "System Events"
    --activate
    -- SET DESKTOP TO SPECIFIC PICTURE
    tell current desktop
    --set picture rotation to 0
    set curpic to picture

    end tell

    tell application "Finder"
    set i to index of file curpic
    set curfolder to container of file curpic
    if i < (number of files in curfolder) then
    set i to i + 1
    else
    set i to 1
    end if
    set newpic to item i of curfolder as alias



    end tell
    tell current desktop
    set pictures folder to curfolder as alias
    set picture rotation to 0
    set picture to newpic
    end tell
    quit
    end tell

    </pre>

    then download Lingon
    http://sourceforge.net/projects/lingon/
    and make a launch daemon that runs the following terminal command at an interval of your choice

    osascript path/to/above/script

    put the correct unix path in the above command.
    save it and log out/in. the script will rotate the pictures consecutively at the period you specified in the launch daemon. you can change the folder with pictures as you normally would in desktop system preferences.

    Message was edited by: V.K.
  • G J Piper Level 1 Level 1 (90 points)
    V.K. wrote:
    then download Lingon
    http://sourceforge.net/projects/lingon/
    and make a launch daemon that runs the following terminal command at an interval of your choice

    osascript path/to/above/script

    put the correct unix path in the above command.
    save it and log out/in. the script will rotate the pictures consecutively at the period you specified in the launch daemon. you can change the folder with pictures as you normally would in desktop system preferences.




    This is what I'm talking about! Thanks for your help!
    I am a lot more familiar with cron than Launch Daemons... would I be able to just save it as a script and have cron run the osascript command every so often? And, if so, would I leave out the "delay 10" line?
  • V.K. Level 9 Level 9 (56,110 points)
    yes, a cron will be just fine. the "delay 10" line is from some troubleshooting. without it launchd barfs on login because it seems that the launch daemon (and hence the apple script) gets activated too early in the login sequence. at least that's what happened to me when i tested the script. so I put the delay there for safety. you can experiment with that delay and see if you can get rid of it at all.

    Message was edited by: V.K.
  • G J Piper Level 1 Level 1 (90 points)
    I ran the script manually, but it doesn't seem to do anything. Would that be because I have 2 monitors?
  • V.K. Level 9 Level 9 (56,110 points)
    with 2 monitors the script should be altered but in its current form it should work on the primary monitor. make sure your desktop background preferences are set NOT to rotate before you run the script.

    here is what the script should be with multiple monitors

    <pre style="
    font-family: Monaco, 'Courier New', Courier, monospace;
    font-size: 10px;
    margin: 0px;
    padding: 5px;
    border: 1px solid #000000;
    width: 720px; height: 335px;
    color: #000000;
    background-color: #ADD8E6;
    overflow: auto;"
    title="this text can be pasted into the Script Editor">


    tell application "System Events"
    --activate
    repeat with j from 1 to number of desktops
    delay 2
    tell desktop j
    --set picture rotation to 0
    set curpic to picture

    end tell

    tell application "Finder"
    set i to index of file curpic
    set curfolder to container of file curpic
    if i < (number of files in curfolder) then
    set i to i + 1
    else
    set i to 1
    end if
    set newpic to item i of curfolder as alias



    end tell
    tell desktop j
    set pictures folder to curfolder as alias
    set picture rotation to 0
    set picture to newpic
    end tell


    end repeat
    quit
    end tell
    </pre>

    Message was edited by: V.K.
  • G J Piper Level 1 Level 1 (90 points)
    Ok, yes! That is working so far on just the main monitor. To run the second monitor I should be able to just duplicate the script but have it access the second monitor instead of the main monitor... do you know what I need to change to make it work on just the second monitor?
  • G J Piper Level 1 Level 1 (90 points)
    This code seems to run like yours, but can keep the pictures in sync even if one gets set inadvertently. Can you improve on it?

    <pre>tell application "System Events"

    tell desktop 1
    set curpicA to picture
    end tell

    tell desktop 2
    set curpicB to picture
    end tell

    tell application "Finder"
    select window of desktop
    set i to index of file curpicA

    set curfolderA to container of file curpicA
    set curfolderB to container of file curpicB
    if i < (number of files in curfolderA) then
    set i to i + 1
    else
    set i to 1
    end if
    set newpicA to item i of curfolderA as alias
    set newpicB to item i of curfolderB as alias

    end tell


    tell desktop 1
    set pictures folder to curfolderA as alias
    set picture rotation to 0
    set picture to newpicA
    end tell

    tell desktop 2
    set pictures folder to curfolderB as alias
    set picture rotation to 0
    set picture to newpicB
    end tell

    quit
    end tell</pre>

    Message was edited by: G J Piper
  • V.K. Level 9 Level 9 (56,110 points)
    the second script I posted above should work with any number of monitors. i tested it with two monitors and it works for me. please try it.
Previous 1 2 Next