Can I Change the Speed of Slideshows in OS X?

Is there any way I can change the rate in which OS X progresses through images in a slideshow, particularly in Preview?


I was able to get this solution to work on Lion (10.8) - here's how you can do it if you install PList Edit Pro, plus the command line interface, via your command line

Bash$> sudo /usr/libexec/plistbuddy -c 'Set JustASlide:mainDuration 1' /System/Library/PrivateFrameworks/Slideshows.framework/Versions/A/Resources/Content/EffectDescriptions.plist

Note that you have to be a root account on your machine or use the sudo command

Bash$> /usr/libexec/plistbuddy -c 'Print JustASlide:mainDuration' /System/Library/PrivateFrameworks/Slideshows.framework/Versions/A/Resources/Content/EffectDescriptions.plist
1

[Update: I'm not entirely convinced that Preview is using the JustASlide slideshow settings. It might be using another preset, or something entirely unrelated. If I set the value lower, say to 1, it doesn't seem to move as quickly as I'd expect.]

I had this same question and couldn't find an obvious answer online. sameers' answer provided enough detail to find the path, and luckily there are built-in commands to edit plist files in OS X.

Using these steps, I was able to change Preview's slideshow delay from 3 seconds to 2 seconds. This should also work on 10.8, and any other version of OS X where this file is present, though I've only tested in 10.9.

A word of warning: the value we're changing is an integer value by default. Depending on how Preview interprets these values, you not be able to set partial seconds. I haven't tested this, and would advise caution. Nothing will explode, but you could potentially introduce bugs/crashes. If you decide to experiment, you should change the -int flag to -real.

Also, defaults is unusual in that it's designed to read a "domain" from OS X's property list heirarchy, but can also work with a file, as long as the full path is specified and the ".plist" is left off the end.

Here's the list of commands to run in Terminal:

# Define variable, to save typing:
plist=/System/Library/PrivateFrameworks/Slideshows.framework/Versions/A/Resources/Content/EffectDescriptions

# make a backup copy:
cp -iv $plist.plist $HOME/Desktop/

# confirm backup copy is valid: MD5 checksums should match for both files
md5 $plist.plist $HOME/Desktop/EffectDescriptions.plist

# Take a look at the data structure before changing, to compare afterward
defaults read $plist JustASlide

# Set new value for slideshow duration: (in this case, 2 seconds)
sudo defaults write $plist JustASlide -dict-add mainDuration -int 2

# Fix permissions: `defaults` recreates the file with 0600 permissions
sudo chmod -v 0644 $plist.plist

# Double check the edit was successful
defaults read $plist JustASlide

Now, launch Preview.app (quit it first if it's already running), and test to see the new slideshow settings in action!