ArtSaverApp: a macOS Slideshow App for Beautiful Pictures

Because Your Pictures are Worth it


Did you ever wish for a slideshow app that would show the place and time where the images

were taken? Or the folder in which each one is stored on your hard disk?

Did you sometimes want to go back through the pictures it has just displayed?

Then ArtSaverApp might be the right slideshow app for you.

(And it can be turned into kind of a screensaver surrogate - see below.)


This app presents your pictures as a "slide show" or "picture flow".

It is meant for people who don't need fancy visual effects, but just

some basic animations (zoom in/out, pan & zoom, cross-dissolving, or static display),

but want to see their pictures as big as possible and, in particular,

want more control over the information that is displayed with the image.

You can customize these much more than Apple's built-in slide show screensaver.

It is mostly geared towards people who want to see their collection of beautiful images

as large as possible, and with some information which one of their images they are seeing.

Many artists (photographers, painters, etc.) like ArtSaverApp.


You can see all of ArtSaverApp's options in the app's Preferences, as usual.

If you wonder what an option means, look at the tooltip by hovering the mouse over the control.

Below are some more in-depth explanations for some of the options.


I think, ArtSaverApp also handles huge image collections, which can be scattered about

many subfolders, better than Apple's built-in picture screen saver,

because it builds a database of the images and stores it on disk,

rather than scanning the folders every time it gets launched.


There is a "companion" screensaver, ArtSaver, which will sit in System Preferences' screensavers

section, but you will need that only under very special circumstances.



Keyboard Controls


You can always bring up a help screen showing these keyboard controls by pressing H

while the app is running.


H                                bring up the help screen at runtime

space bar                   pause the slide show, i.e., the current image will be

                                   displayed forever (the zooming animation will  continue)

arrow left/right         browse previously shown images

return                        reveal current image in Finder (and quit the screensaver)

delete                         delete image currently being display, if enabled in Preferences

                                    (works only when ArtSaverApp is running on a single monitor)

Z                                  pause the zooming/panning animation (but continue the slide show)

I                                  toggle display of information (at bottom of screen)

B                                  blank screen (and unblank)

F                              switch to full-screen (and back)




How to Review the List of Pictures ArtSaverApp Has Displayed


In order to retrieve a list of all the images ArtSaverApp has displayed after you stopped it,

copy this line into Terminal:

  log show --predicate 'subsystem == "de.zach.ArtSaverApp"' --info

(It will take a few seconds to show results.)


Alternatively, invoke, type "de.zach.ArtSaverApp" in the search box (w/o quotes),

select SUBSYSTEM instead of ANY, and check Action / Include Info Messages.




Screensaver Surrogate Mode


If you'd rather have your Mac launch ArtSaverApp automatically for you after some idle time

(like it does with real screensavers), but don't want to miss the keyboard controls,

then you might want to try the helper app ArtSaver Auto Launcher, which you can download here:

Download it, launch it (a new little icon will appear in the top right status bar),

make the settings you want, and let it launch ArtSaverApp for you. That's it.

(Of course, you can still launch ArtSaverApp yourself as usual, too.)


Just like ArtSaverApp, you can move ArtSaver Auto Launcher anywhere you want;

/Applications or  ~/Applications are good places.


You might even consider adding ArtSaver Auto Launcher to your Login Items.

(If you don't know how to do that, here are some instructions.)


A note about safety:

ArtSaverApp cannot lock the screen while it is running (like with a real screensaver).

Consequently, DON'T use it in spaces where the public could access your Mac!

(Your Mac will still lock the screen when it goes to sleep, of course.)




Multiple Screens/Monitors


If you have multiple monitors connected to your Mac,

then you need to specify settings for that monitor on which you want to run the app.

You can have different settings for different monitors; you can even specify different image folders.


Right now, ArtSaverApp can open only one window.

But you might be able to "hack" it by making a copy of the app (or several),

then make all the settings for the different monitors with one app (while only one is running),

close it, then run both apps (i.e.,  ArtSaverApp  and  ArtSaverApp copy) at the same time,

go into Settings and select the different settings for the different monitors.

It should even work with an iPad connected via Sidecar as an auxiliary monitor.

You may need to check the option "Displays have separate Spaces” in Mission Control (System Preferences).


If you don't need the keyboard controls, you can also try ArtSaver, the companion screensaver proper,

which offers proper multi-monitor support (see below).




First Invocation


When ArtSaverApp is invoked for the very first time, you need to specify a pictures folder.

However, please note that, as of Mojave (macOS 10.14), it cannot access the photos library any more!


For more information, see




User Survey


I'd like to get a better understanding of which features are important to you.

So, I'd like to invite you to participate in a user survey (completely anonymous, about 4 min):




Exporting Photos From the


If and when exporting your photos from the photos app, so that ArtSaverApp

can access and display them, I recommend the following settings in the Export dialog:

- Include "Title, keywords, and Description" and "Location Information"

- File Name: Use Title  (unless the original files already had descriptive file names when importing)

Then, in ArtSaverApp's options, check "filename" and "info"; thus, you will get the title, and several

other information on the picture in ArtSaver (see below "More Info About 'infos' to read a precise





Accessing Photos in Directly


There is a "trick" with which you can still - sort of - access directly the photos that are stored

inside's database, without exporting them:

1. Copy this as one line into Terminal:

        open ~/Pictures/Photos\ Library.photoslibrary/originals

2. A folder will appear with subfolders named with numbers; at the top there is a little folder symbol

3. Open ArtSaverApp's preferences, click "Change", an "Open" dialog will appear

4. Now click and hold the little folder icon of the folder from step 2,

    and drag it into the "Open" dialog and release

5. The "Open" dialog should now show the folder from step 2

6. Select "Follow aliases", then click OK


Of course, this is just a crude work-around; you only get all or nothing.

And the filenames don't tell you anything (but the place & date do, hopefully).


Warning: disable the Delete function in ArtSaver's Preferences!

Deleting a photo might render the database corrupt!




Companion Screensaver


There is a screensaver, ArtSaver, very similar to ArtSaverApp, which can get launched

by your Mac automatically after a period of user's inactivity  (just like your default screensaver).


- the screensaver can run on multiple monitors simultaneously, even with different settings!

- your screen gets locked (provided you made the appropriate settings in System Preferences)


- ArtSaver cannot be controlled by keyboard, like ArtSaverApp can.

- Might not work under Mojave (macOS 10.14) ! (YMMV)

See ArtSaverApp's web page for more details.



1) Download ArtSaver here, and unpack the ZIP file (if macOS hasn't done it for you)

2) Double-click ArtSaver.saver and follow instructions (if any)

3) Go to System Preferences / Desktop & Screen Savers / Screen Savers,

     choose ArtSaver in left hand panel, go to ArtSaver's Options,

     select folder of images, and set other options as you like.


Prerequisites: runs under the same macOS version as the regular app.




Difference Between "Use Spotlight" and "Follow aliases" in the Search Options


If the terms "folder alias" or "symbolic link" (a.k.a. "symlink") don't mean anything to you,

then you can safely skip this section and just use the default setting "Use Spotlight".


The option "Follow aliases" is only relevant to people who want or have a more complex folder

structure than just a simple folder with its sub-folders.

For instance, if you have several folders (A, B, ..) that do not reside in a common parent folder,

then you can create one main folder (e.g., "ArtSaver Pictures") and put aliases (or symbolic links)

to the real folders A, B, ..., into "ArtSaver Pictures" (how to create folder aliases).

That way you can make ArtSaverApp show images from several different folders.


If you are wondering why there are two different options in ArtSaver:

Spotlight cannot follow aliases (nor symlinks), but the search method I implemented

in ArtSaver is (necessarily) slower than Spotlight.




More Info About "infos" in Preferences/Options


Which information does ArtSaver extract from the photo files, and in which order does it display it?

There are four pieces of info ArtSaver tries to display when you check "infos":

  1. kind of a "description", 2. keywords/people, 3. location, and 4. date/time.

ArtSaver tries to find this information, then assembles them into one line

to be shown underneath the file name.

Here are the "EXIF tags" ArtSaver evaluates to derive this information:

1. ArtSaver tries a succession of tags to find a "description" of the image:

    first, it looks for the IPTC tag "Caption/Description" (a.k.a. "Caption/Abstract"),

    then for IPTC/XMP tag "ArtworkContentDescription", then for the TIFF tag "Image Description";

    after all that, it checks for the presence of the IPTC tag "ObjectName" (a.k.a. "Title")

    and prepends this to the description, but only, if it is not identical to the filename.

2. The keywords are extracted from the IPTC tag "Keywords"; if not present, it will

     try the IPTC/XMP tag "PersonInImage" (a.k.a. "Person Shown")

     ArtSaver will try to display all keywords.

3. Location is derived from the GPS info if present in the picture;

    if the Mac has internet connection, then ArtSaver will display it as city & country,

    otherwise it will just display longitude & latitude.

4. For date/time it uses the EXIF tag "Date Time Original".


Most of these tags are used by Apple Photos when you export pictures including

Title, Keywords, Description, and Location information.

If you have people tagged in your photos in and exported them,

then those names will appear as Keywords (older Photos versions) or as

"Persons Shown" (newer Photos versions).

You can preview the tags by Preview's "Show Inspector";

also, you can view and manipulate tags using the command line tool 'exiftool'.




Excluding Thumbnails or Other Specific Image Files


If ArtSaverApp's defaults still let some "small" images show up in the slide show

(they will probably look very grainy), you can exclude them by adjusting the "Skip images" settings.


If you want to exclude specific file formats, for instance, all cr2 files,

then you can add this line in the "regex" field at the bottom left:


You can add similar patterns for other formats (one pattern per line).




Order in Which ArtSaverApp Shows Images


There are two fundamentally different ways, controlled by the option "Shuffle image order":

1. Random order ("Shuffle" on): should be obvious;

2. Sequential order ("Shuffle" off): ArtSaverApp starts at the first image in the list, then displays

    the second one, etc., unless "Start random" is on, in which case it will pick a random index

    in the list of images, and then display images in sequential order from there.

    The list of images is not sorted in any specific way; if you have "Follow aliases" on in

    ArtSaverApp's preferences, then the images are grouped by folder (and sub-folder).

During one run, ArtSaverApp never shows the same image, regardless of the setting of "Shuffle ..".

Between different invocations, behavior is a different, depending on the "Shuffle" option:

1. Shuffle on: ArtSaverApp forgets which images were shown in the previous run;

2. Shuffle off: ArtSaverApp resumes to display the images where it left off in the last run,

    unless "Start random" is on, in which case it will pick a new index randomly in the list of images

    and then continue sequentially from there.




Starting in Full Screen


You can launch the app directly in full-screen mode by running this command in Terminal: 

      open -a ArtSaverApp --args -f




Feedback, Bug Reports, Requests for Enhancement


Email: gabriel.zachmann at

Home page:

Or click on the "Feedback" button in the options pane.

Or enter issues directly at Github:

By sending feedback, RFE's, donating, or helping find a bug,

you will become eligible for receiving free betas and updates of ArtSaverApp for eternity.


In case of a bug report, please send a log file!

You can try to use Console:

Or you copy this as one line into Terminal:

  log show --predicate 'subsystem == "de.zach.ArtSaverApp"' --info --debug > ~/Desktop/Log.txt

Then send me the file Log that appeared on your desktop.




Mailing List


If you subscribe to the ArtSaver mailing list

you can receive announcements of new versions (and betas).

The mail volume is extremely low, approximately, on average, 1-2 mails per year.




Change Log (Combined for App and Screensaver)


3.1.2 (March 2021):


New features:

- Auto Launcher has a new "Launch Now" menu item



- The management of different preferences/settings for different monitors had stopped working

  (probably due to one of the Catalina updates) -> fixed



- Auto Launcher will filter out instances of ArtSaverApp in /tmp and in ~/Library/Developer



3.1.1 (Oct 2020):


This version was necessary to be able to modify the text in the app store,

which I needed to modify in order to clarify something.



3.1 (May-Aug 2020):


New features:

- New stand-alone app that contains all the features of the old ArtSaver

  (as opposed to the new ArtSaver which cannot have keyboard control any more)

- Handles huge images (50+ MB, 8000+ pixels) much more smoothly

- You can delay the display of the infos at the bottom; good for having quizz games

- When shuffle mode is off, you can tell ArtSaver whether or not to start with a random image

  (when it doesn't, ArtSaver keeps track across invocations)

- You can invoke ArtSaverApp in full-screen: open -a ArtSaverApp --args -f

- Added command line flag -s, to run ArtSaverApp in "screensaver surrogate" mode;

  in that mode, it will quit when an unknown key is pressed or mouse is moved

- ArtSaverApp now has a helper app, ArtSaver Auto Launcher,

  that can launch ArtSaverApp after some idle time (it will prevent the macOS screensaver from

  launching, and it will not launch ArtSaver if one of the well-known video conference tools is


- ArtSaver Auto Launcher can/will launch multiple instances of ArtSaverApp, if present

- Additional tags: TIFF ImageDescription, IPTC ObjectName (Title), XMP/IPTCExt PersonInImage

- Delete key can be enabled/disabled (only relevant for regular app)



- Compiles and runs under Catalina (which incurred a LOT of changes under the hood),

  BUT! .. see below

- Delete key did not remove the image from the database

- Removed a bug that caused the previous image to flash for a split-second after it had been

   faded out

- The screensaver can run simultaneously on multiple monitors, even if they are identical

   (the app can have only one window)

- No "flashing" any more (hopefully)

- With lots of huge images, memory pressure could become very high (due to keeping history

  of images)

  Much alleviated by changing history size dynamically, depending on the amount of unused memory

- Retrieves ArtworkContentDescription IPTC tag, if CaptionAbstract is not present

- Adjusted font size of help text in case of very large fonts for the bottom lines

- Multi-monitor support got broken b/c of API change


Lost features in the screensaver:

- No more key strokes when the screensaver ArtSaver is running (e.g., the arrow keys are gone)

  This regression is due to Apple :-( 

  Please complain at )

  In the stand-alone app, keystrokes (arrows, pause, etc.) are still available



- When run for the first time, ArtSaver doesn't scan ~/Pictures any more by default

- Added security-scoped bookmarks for the folders containing the images,

  which incurred a large number of more changes in the code internally (necessary for Catalina)

- Long path names are truncated at the beginning; but only, if the path to the image is being

  display, too. Also, the caption (EXIF tag) is *not* displayed, if it is equal to the filename.




3.0.1 (Oct 2019):


Bug fix:

- If all flags (path, name, info) were off, ArtSaver would still show some info

- Reduced the chance of the "flashing" of the previous image when the new one is completely

  faded in




3.0 (Sep 2016 - 2019):


New features:

- Can trash images while screen saver is running (delete key)

- Can pause zooming while running (command key) [not quite perfect, but maybe good enough]

- Can toggle display of information at bottom of screen during runtime ( I key)

- Can follow aliases (and symbolic links) in the folder tree

  (allows for more complex organization, e.g., one root folder pointing to many different other folders);

- Can display additional info of photos, if available; currently, ArtSaver looks for

  Description, Keywords, and Location (see Info in [gone]

- Drop shadow behind text

- Can display GPS location, EXIF date, and caption/keywords (IPTC) metadata

- Ken Burns effect

- Rearranged GUI (screen saver options pane)

- Trilinear filtering of images

- Can blank the screen at runtime with the B key

- Can show only path w/o filename (until now, only filename, and file+path were possible)


Lost features:

- Can't access the photo library any more :-( ! (due to Mojave's new security features, which are good)

- Parameter "cycle time" is gone now; I figured it is not really necessary;

  now, (cycle time) = 0.5 * (image duration time)


Enhancement of existing features:

- Can use up/down cursor keys (as alternative to left/right)  for switching to previous/next key

- When images are displayed randomly, none of them is shown twice until all have been shown at least once

- No limits on image size any more (almost none)

- The "Rescan Now" button also applies to photo albums [defunct]

- Dito for the Automatic Rescan

- In case images are displayed in non-random order, then they are sorted alphabetically

  (sorting is done on the complete path)



- Use for the donation button

- Replaced iPhoto albums by Photos' albums (Defunct as of 2019)

  be sure to right-click on the album and "Download Originals to this Mac"!

  It also respects the "Hidden" flag, i.e., photos in the Hidden album are never shown

- Slight changes in the screen saver options dialog

- Uses NSPathControl instead of NSTextField for the images directory


Bug fixes:

- Hot corner for starting the screensaver seems to work again

- Cross-dissolve works again

- When ArtSaver is interrupted (e.g., by the user moving the mouse) and then resumes later,

  then it continues in the list of images at the same point where it left off (when randomization is off)

- Chinese file names should work now

- Randomization did not work sometimes (seed was missing)


Under the hood: Replaced a lot of deprecated API methods:

- Text drawing (replaced CGContextShowTextAtPoint et al. by CTLineDraw et al. from Core Text)

- loadNib:owner:

- headermaps

- ModifierKeyFlags

- Replaced Scripting Bridge with MLMediaLibrary, in order to access Photos (now defunct, too)

- Switched from NSLog to os_log(3): NSLog() is deprecated, and os_log provides better

  functionality in and log(1)

- Switched from manual retain/release to ARC (at last)!

- Use CATextLayer for rendering the file name (gets rid of some compiler warnings, too)

- More efficient handling of the EXIF orientation flag


Known bugs:






2.2 (Feb 2011):


New features:

- ArtSaver can handle multiple monitors (screens), i.e., it will store different preferences for each

  screen; in particular, this will allow you to display different image lists on different screens.

  (For this to work, you must uncheck "Main screen only" in System Preferences / Screen Savers!)

  There is a deliberate offset between the two (or more) screens, in order to prevent disk fighting

  in the case all screen savers have the same duration per image. (In that case ArtSaver would have

  to load the new images at the same time for all screens.)

   Keyboard input (pause, forward, backward, show in Finder) goes to all screens simultaneously.

- You can switch cross-dissolve off, and you can change the duration of a cross-dissolve

- ArtSaver can now automatically re-scan the directory / photo album after a user-specified time

- The "skip patterns" are now regular expressions (not file patterns any more!);

  this gives you more flexibility

- The "skip patterns" (regexp's) can handle unicode now (i.e., characters from all languages)

- You can switch off the displaying of the image file name's extension (e.g., the ".jpg" suffix)

- General improvements of the user interface of the configuration sheet

- When displaying images in sequential order ("Randomize images" is off), you can now go back

  (cursor left) indefinitely


Bug fixes / changes:

- Matching of the skip patterns was buggy

- When presenting images sequentially, ArtSaver "forgot" where it was stopped last time, so it always started

  with index 0 (= first image in the list) each run;

  now, it continues with the image it displayed during the last run

- Should work under 10.5 again (it does work on my machine with 10.5.8 / PPC G4)

- Improved the part of the UI controlling the options for the displaying of the file names



2.1.1 (May 2010):


Bug fixes:

- paths beginning with "/tmp" were handled incorrectly

- path with UTF8 characters didn't print at all in the log file



2.1 (Nov 2009):


Bug fixes:

- path names with '/' were not handled correctly

- maybe, version 2.0 contained a bug when searching was done by hand

  ("Use Spotlight" box is off); this should be fixed

- the usual installation via double-click should work now



2.0 (Sep 2009):


New features:

- pause animation (space bar)

- leaf through previously shown images (left/right cursor)

- show image in Finder (return key)

- switching images is now done with cross-fading

- CPU usage is now only 5% (before 60%!); at least on my MacBookPro under 10.5.8 with an Intel

  Core 2 Duo and using the GeForce 9400M. This is made possible by utilizing Core Animation,

  which entailed a heavy internal restructuring of the code

- correctly observes the EXIF orientation tag

- new control over whether/how many images should be displayed without black border

- non-randomized image picking (always goes through the images in the same order)

- runs under both Snow Leopard (10.6) and Leopard (10.5)

- raised the text line with larger displays

- version number in config sheet is extracted automatically from the Info.plist


Bug fixes:

- New preferences sometimes didn't get saved;

  code for preferences handling is much cleaner now.

- Works on PPC again (still needs 10.5 or higher)



1.7 (Mar 2008):


Can use iPhoto albums now. (Still creates a list of images, thus iPhoto does not have to get invoked

during actual screen saver runs, only during configuration.)

Works only under 10.5 (Mac OS X Leopard).



1.6.3 (Feb 2008):


Compiled for Leopard.

Improved handling of error messages, for instance, "Image gone: ..." is

being displayed now for only 3 seconds.

Improved the scanning directory trees for images "by hand", i.e., without using Spotlight.

Version number in config sheet and info.plist



1.6.2 (Jul 2007):


Fixed a bug, which apparently occured very rarely.

Symptoms: ArtSaver worked in Preview mode, but showed a blank screen in full-screen mode



1.6.1 (Jul 2007):


Small images are now displayed at a minimum size of 0.4 * screen-size,

even if the user chooses to have ArtSaver display much smaller images.



1.6 (Jul 2007):


New option to adjust to font size of the image file name.


A 'rescan' button to ease invoking a rescan of the image directory when its contents change often



1.5 (Mar 2007):


You can see the "picture log" in either of two ways:

In a Terminal 'syslog -k Sender ArtSaver';

or, via Apple Menu -> About this Mac -> More Info -> Logs -> system.log


Option to display only the basename of the pictures.


Option to switch the zoom in/out effect off.


Various little things in the source code.







I'd like to thank the kind people on, in particular, Michael Ash,

Doc O'Leary, David Phillip Oster, Nick Hristov, Uli Kusterer, Patrick Machielse, Matt Neuburg.

I am also extremely grateful to the kind people on the cocoa-dev mailing list (in particular, Douglas Welton,

Shawn Erickson, Graham Cox, Jens Alfke, Nick Zitzman, Quincey Morris, Gary L. Wade,

Richard Charles, David Duncan, Alex Zavatone, Glenn L. Austin, Rob Petrovec,

Steve Mills, Trevor Phillips, Jim Crate, Stephane Sudre, and many more)!

Without them, I could not have implemented some of the features.

Many thanks also to those users that have sent in requests for enhancement or bug reports and helped

with testing new features. In particular, I'd like to thank Jerome Bullard, Lars Gottlieb, Aaron Reitz,

Christian Aubert, Pete Norloff, Doug Gordon, Jay Novello, Jean Devriendt.

Last, but not least, a huge "thank you" goes to the developer of SaverLab! Without it, developing screen savers

would have been virtually impossible.







Gabriel Zachmann, 2005-2077