ArtSaver: the macOS Screen Saver for Beautiful Pictures ‒
Because Your Pictures are Worth it
Did you ever wish your screensaver would show the place and time where the images
were taken? Or the folder in which each one is stored on your hard disk?
Then ArtSaver might be the right screensaver for you.
This screensaver 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 ArtSaver.
You can see all of ArtSaver's options at
System Preferences/ Desktop & Screen Savers→ ArtSaver → Screen Saver Options
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, ArtSaver 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 invoked.
How to Review the List of Pictures ArtSaver Has Displayed
In order to retrieve a list of all the images ArtSaver has displayed after you stopped it,
copy this line into Terminal:
log show --predicate 'subsystem == "de.zach.ArtSaver"' --info
(It will take a few seconds to show results.)
Alternatively, invoke Console.app, type "de.zach.ArtSaver" in the search box (w/o quotes),
select SUBSYSTEM instead of ANY, and check Action / Include Info Messages.
Multiple Screens/Monitors
You can use ArtSaver with several screens (monitors) attached to the same Mac.
On the options pane (see above), you need to specify settings for each and every
monitor; you can even specify different image folders, so you can show different slide shows
at the same time.
Installation
As usual, just double-click the file ArtSaver.saver.
Then go to
Apple Menu → System Preferences → Desktop and Screensavers → choose ArtSaver in sidebar.
Then, go to ArtSaver's Options, select folder of images,
and set other options as you like.
Alternatively, if you want to install it "by hand", first delete any old copies,
second drag the "ArtSaver" package to either one of the following folders:
/Library/Screen Savers/ (ArtSaver will be available to all users), or,
~/Library/Screen Savers/ (only you can use it)
First Invocation
When ArtSaver is invoked for the very first time (i.e., when you go to "Desktop and Screensavers"
and click on ArtSaver in the list of available screensavers), 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
http://www.artsaver.de/index.html
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):
https://www.surveylegend.com/s/2j5i
Exporting Photos From the Photos.app
If and when exporting your photos from the photos app, so that ArtSaver
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 ArtSaver'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
description.)
Accessing Photos in Photos.app Directly
There is a "trick" with which you can still - sort of - access directly the photos that are stored
inside Photos.app'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 Photos.app database corrupt!
Companion App
You probably already know that there is a companion, regular app
that you can launch yourself and that offers keyboard control.
If you are interested, head over to ArtSaver's home page.
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 ArtSaver 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 Photos.app 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 ArtSaver'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:
.*cr2
You can add similar patterns for other formats (one pattern per line).
The Order in Which ArtSaver 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): ArtSaver 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
ArtSaver's Options, then the images are grouped by folder (and sub-folder).
During one run, ArtSaver 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: ArtSaver forgets which images were shown in the previous run;
2. Shuffle off: ArtSaver 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.
Feedback, Bug Reports, Requests for Enhancement
Email: gabriel.zachmann at icloud.com
Home page: www.artsaver.de
Or click on the "Feedback" button in the options pane.
Or enter issues directly at Github: https://github.com/GabZach/ArtSaver/issues
By sending feedback, RFE's, donating, or helping find a bug,
you will become eligible for receiving free betas and updates of ArtSaver for eternity.
In case of a bug report, please send a log file!
You can try to use Console:
https://support.apple.com/guide/console/reports-cnsl664be99a/mac
Or you copy this as one line into Terminal:
log show --predicate 'subsystem == "de.zach.ArtSaver"' --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
https://mailman.zfn.uni-bremen.de/cgi-bin/mailman/listinfo/artsaver
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
Fixed:
- The management of different preferences/settings for different monitors had stopped working
(probably due to one of the Catalina updates) -> fixed
Changes:
- 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
running)
- 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)
Fixed:
- 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 https://www.apple.com/feedback/macos.html )
In the stand-alone app, keystrokes (arrows, pause, etc.) are still available
Changes:
- 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 Photos.app) [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)
Changes:
- Use donorbox.org 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 Console.app 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.
Acknowledgements
I'd like to thank the kind people on comp.sys.mac.programmer.help, 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.
Copyright
Gabriel Zachmann, 2005-2077