Skip to content
This repository has been archived by the owner on Jan 7, 2023. It is now read-only.
/ time24 Public archive

A macOS screensaver with a rolling time sync.

License

Notifications You must be signed in to change notification settings

kreait/time24

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

time24 kreait screen saver

A macOS screensaver with a rolling time sync as a side project at kreait.

Screenshot

Idea

time24 will show either an short default movie or you can select your own through the configuration panel.

Rolling Time Sync

The play time will be synced (in a rolling way) with your current day time! If you select a movie running for 24 or 12 hours, the displayed time of the movie will be in sync with your current day time - that was the whole point of this experiment.

Details

  • just to test my aging Objective-C skills (and enjoy super short compile times as well as tiny executables), the project adheres to the Xcode template (but Mike Hill found a way to set up a Screen Saver in Swift).

  • the most annoying part was debugging because attaching an extension to the system Screen Saver is blocked by macOS security policies. os_log is not working nicely (at least in High Sierra) due to a lot of data being masked as hence the good old NSLog (in conjunction with log stream --process "System Preferences") still works fine.

  • surprisingly adding a Screen Saver Icon/Image to be shown in the System Preferences was not documented anywhere, but the solution is simple: add thumbnail.png and [email protected] to your project, make sure it will be copied in the build phase and disable COMBINE_HIDPI_IMAGES in the build settings. The repo contains a Screen Saver Photoshop template file for that purpose. There is no need to add anything to the Info.plist for that icon.

  • I'm still learning macOS development, so be patient with my class setup - this is more or less a "beginners 1st project code style". Especially handling the configuration screen in an own class and moving to a storyboard would be next on my agenda.

  • as expected but super important: NSBundle.mainBundle does not work as the Screen Saver is an extension running in the context of the System Preferences. Hence you have to move that to [NSBundle bundleForClass:time24.class] (which is giving nasty dependencies to that main class).

  • the embedded movie is only 25 seconds long and will hence jump every now and then. Look for an 24 hours movie and have more fun!

  • b2 was rebuild in Xcode 9 and support for macOS 10.12 was integrated as well (needed to wait/observe for URL being prepared)

  • due to Mojaves new security policies, NSOpenPanel is not serving the selected file anymore, which is why the new configuration panel now parses the ~/Movies folder for movie files

Installation

Build this project in Xcode (tested under Xcode 10), open the Products group and right-click on time24.saver to Open with External Editor. You may have to change Bundle Identifier to meet your setup.

About

A macOS screensaver with a rolling time sync.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published