diff --git a/Aerial.xcodeproj/project.pbxproj b/Aerial.xcodeproj/project.pbxproj index a6ea69ea..d59f9026 100644 --- a/Aerial.xcodeproj/project.pbxproj +++ b/Aerial.xcodeproj/project.pbxproj @@ -77,6 +77,8 @@ 03D37FDC22145487005A146F /* fr.json in Resources */ = {isa = PBXBuildFile; fileRef = 03D37FD822145487005A146F /* fr.json */; }; 03D3DAC4221F286700BDA52F /* pl.json in Resources */ = {isa = PBXBuildFile; fileRef = 03D3DAC3221F286700BDA52F /* pl.json */; }; 03D3DAC5221F286D00BDA52F /* pl.json in Resources */ = {isa = PBXBuildFile; fileRef = 03D3DAC3221F286700BDA52F /* pl.json */; }; + 03DAD470229EAC66000DA6D1 /* Installation.md in Resources */ = {isa = PBXBuildFile; fileRef = 03DAD46F229EAC66000DA6D1 /* Installation.md */; }; + 03DAD473229EC031000DA6D1 /* Readme.md in Resources */ = {isa = PBXBuildFile; fileRef = 03DAD472229EC031000DA6D1 /* Readme.md */; }; 03E8730C2165013C002B469B /* DownloadManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E8730B2165013C002B469B /* DownloadManager.swift */; }; 03E8730F216501ED002B469B /* AsynchronousOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E8730E216501ED002B469B /* AsynchronousOperation.swift */; }; 03E8731021662AEB002B469B /* DownloadManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E8730B2165013C002B469B /* DownloadManager.swift */; }; @@ -131,6 +133,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 030B5E32229FDD26008F2910 /* AutoUpdates.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = AutoUpdates.md; sourceTree = ""; }; 0313F9E522942AA500B074BB /* CustomVideos.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CustomVideos.xib; sourceTree = ""; }; 0313F9E722942B4500B074BB /* CustomVideoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomVideoController.swift; sourceTree = ""; }; 0313F9EB2294468600B074BB /* SeededGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeededGenerator.swift; sourceTree = ""; }; @@ -163,6 +166,14 @@ 03D37FD722145487005A146F /* es.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = es.json; sourceTree = ""; }; 03D37FD822145487005A146F /* fr.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = fr.json; sourceTree = ""; }; 03D3DAC3221F286700BDA52F /* pl.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = pl.json; sourceTree = ""; }; + 03D6C78922A0384F00DE830B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 03DAD46F229EAC66000DA6D1 /* Installation.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = Installation.md; sourceTree = ""; }; + 03DAD471229EB1E9000DA6D1 /* ChangeLog.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ChangeLog.md; sourceTree = ""; }; + 03DAD472229EC031000DA6D1 /* Readme.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = ""; }; + 03DAD474229EC3CD000DA6D1 /* OfflineMode.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = OfflineMode.md; sourceTree = ""; }; + 03DAD475229EC544000DA6D1 /* HardwareDecoding.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = HardwareDecoding.md; sourceTree = ""; }; + 03DAD476229EC64D000DA6D1 /* Troubleshooting.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Troubleshooting.md; sourceTree = ""; }; + 03DAD477229ECAAA000DA6D1 /* CustomVideos.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CustomVideos.md; sourceTree = ""; }; 03E8730B2165013C002B469B /* DownloadManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadManager.swift; sourceTree = ""; }; 03E8730E216501ED002B469B /* AsynchronousOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsynchronousOperation.swift; sourceTree = ""; }; 03E8731221675FE0002B469B /* TimeManagement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeManagement.swift; sourceTree = ""; }; @@ -272,6 +283,21 @@ path = Screenshots; sourceTree = ""; }; + 03DAD46E229EAC66000DA6D1 /* Documentation */ = { + isa = PBXGroup; + children = ( + 03DAD46F229EAC66000DA6D1 /* Installation.md */, + 03DAD471229EB1E9000DA6D1 /* ChangeLog.md */, + 03DAD474229EC3CD000DA6D1 /* OfflineMode.md */, + 03DAD475229EC544000DA6D1 /* HardwareDecoding.md */, + 03DAD476229EC64D000DA6D1 /* Troubleshooting.md */, + 03DAD477229ECAAA000DA6D1 /* CustomVideos.md */, + 030B5E32229FDD26008F2910 /* AutoUpdates.md */, + 03D6C78922A0384F00DE830B /* README.md */, + ); + path = Documentation; + sourceTree = ""; + }; 03E8730D216501B3002B469B /* Downloads */ = { isa = PBXGroup; children = ( @@ -428,6 +454,8 @@ FACAF19B1BD9FC6000E539DC = { isa = PBXGroup; children = ( + 03DAD472229EC031000DA6D1 /* Readme.md */, + 03DAD46E229EAC66000DA6D1 /* Documentation */, FAC36F2F1BE1756D007F2A20 /* App */, FAC36F361BE1756D007F2A20 /* Resources */, FAC36F3C1BE1756D007F2A20 /* Source */, @@ -579,6 +607,7 @@ files = ( 036A34B622730A0700A49135 /* zh_CN.json in Resources */, 033192E2217B78240073B580 /* en.json in Resources */, + 03DAD470229EAC66000DA6D1 /* Installation.md in Resources */, FAC36F541BE1756D007F2A20 /* PreferencesWindow.xib in Resources */, 03D1E79522848F7F00D10CF7 /* screen1.jpg in Resources */, FAC36F4E1BE1756D007F2A20 /* icon-day.pdf in Resources */, @@ -590,6 +619,7 @@ 0313F9E92294337F00B074BB /* CustomVideos.xib in Resources */, 03D3DAC5221F286D00BDA52F /* pl.json in Resources */, FAC36F481BE1756D007F2A20 /* Assets.xcassets in Resources */, + 03DAD473229EC031000DA6D1 /* Readme.md in Resources */, 033D62AC216CADCD00F3AF83 /* icon-day-dark.pdf in Resources */, 03D1E79222848F7F00D10CF7 /* screen2.jpg in Resources */, FAC36F4A1BE1756D007F2A20 /* MainMenu.xib in Resources */, diff --git a/Aerial/Source/Controllers/CustomVideoController.swift b/Aerial/Source/Controllers/CustomVideoController.swift index 50ec9c9e..edf9e74c 100644 --- a/Aerial/Source/Controllers/CustomVideoController.swift +++ b/Aerial/Source/Controllers/CustomVideoController.swift @@ -17,6 +17,7 @@ class CustomVideoController: NSWindowController, NSWindowDelegate { @IBOutlet var folderView: NSView! @IBOutlet var fileView: NSView! + @IBOutlet var onboardingLabel: NSTextField! @IBOutlet var folderShortNameTextField: NSTextField! @IBOutlet var timePopUpButton: NSPopUpButton! @@ -334,6 +335,7 @@ extension CustomVideoController: NSOutlineViewDelegate { topPathControl.isHidden = false folderView.isHidden = false fileView.isHidden = true + onboardingLabel.isHidden = true topPathControl.url = URL(fileURLWithPath: folder.url) folderShortNameTextField.stringValue = folder.label @@ -343,6 +345,7 @@ extension CustomVideoController: NSOutlineViewDelegate { topPathControl.isHidden = false folderView.isHidden = true fileView.isHidden = false + onboardingLabel.isHidden = true topPathControl.url = URL(fileURLWithPath: file.url) videoNameTextField.stringValue = file.accessibilityLabel @@ -379,6 +382,7 @@ extension CustomVideoController: NSOutlineViewDelegate { topPathControl.isHidden = true folderView.isHidden = true fileView.isHidden = true + onboardingLabel.isHidden = false } return true diff --git a/Aerial/Source/Controllers/PreferencesWindowController.swift b/Aerial/Source/Controllers/PreferencesWindowController.swift index 2be22d43..b402b76b 100644 --- a/Aerial/Source/Controllers/PreferencesWindowController.swift +++ b/Aerial/Source/Controllers/PreferencesWindowController.swift @@ -83,8 +83,9 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo @IBOutlet weak var downloadProgressIndicator: NSProgressIndicator! @IBOutlet weak var downloadStopButton: NSButton! - @IBOutlet var versionLabel: NSTextField! + //@IBOutlet var versionLabel: NSTextField! + @IBOutlet var versionButton: NSButton! @IBOutlet var popover: NSPopover! @IBOutlet var popoverTime: NSPopover! @IBOutlet var popoverPower: NSPopover! @@ -326,10 +327,9 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo logTableView.dataSource = self if let version = Bundle(identifier: "com.johncoates.Aerial-Test")?.infoDictionary?["CFBundleShortVersionString"] as? String { - versionLabel.stringValue = version - } - if let version = Bundle(identifier: "com.JohnCoates.Aerial")?.infoDictionary?["CFBundleShortVersionString"] as? String { - versionLabel.stringValue = version + versionButton.title = version + } else if let version = Bundle(identifier: "com.JohnCoates.Aerial")?.infoDictionary?["CFBundleShortVersionString"] as? String { + versionButton.title = version } // Some better icons are 10.12.2+ only @@ -432,6 +432,12 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo horizontalDisplayMarginTextfield.doubleValue = preferences.horizontalMargin! verticalDisplayMarginTextfield.doubleValue = preferences.verticalMargin! + if preferences.newViewingMode == Preferences.NewViewingMode.spanned.rawValue { + displayMarginBox.isHidden = false + } else { + displayMarginBox.isHidden = true + } + // Advanced panel if preferences.debugMode { debugModeCheckbox.state = .on @@ -750,6 +756,26 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo fullRange = NSRange(location: 0, length: coloredLink.length) coloredLink.addAttribute(.foregroundColor, value: color, range: fullRange) linkTimeWikipediaButton.attributedTitle = coloredLink + + // We have an extra project link on the video format popover, color it too + coloredLink = NSMutableAttributedString(attributedString: versionButton.attributedTitle) + fullRange = NSRange(location: 0, length: coloredLink.length) + coloredLink.addAttribute(.foregroundColor, value: color, range: fullRange) + versionButton.attributedTitle = coloredLink + + } + + @IBAction func versionButtonClick(_ sender: Any) { + let workspace = NSWorkspace.shared + var url: URL + + if versionButton.title.contains("beta") { + url = URL(string: "https://github.com/JohnCoates/Aerial/releases/tag/v" + versionButton.title)! + } else { + url = URL(string: "https://github.com/JohnCoates/Aerial/blob/master/Documentation/ChangeLog.md")! + } + + workspace.open(url) } // MARK: - Video panel diff --git a/Aerial/Source/Models/ErrorLog.swift b/Aerial/Source/Models/ErrorLog.swift index b34d288a..3a225865 100644 --- a/Aerial/Source/Models/ErrorLog.swift +++ b/Aerial/Source/Models/ErrorLog.swift @@ -82,6 +82,7 @@ func Log(level: ErrorLevel, message: String) { } else { dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" } + let string = dateFormatter.string(from: Date()) + " : " + message + "\n" // tmpOverride diff --git a/Documentation/AutoUpdates.md b/Documentation/AutoUpdates.md new file mode 100644 index 00000000..a953e1ae --- /dev/null +++ b/Documentation/AutoUpdates.md @@ -0,0 +1,45 @@ +# About auto-updates + +Starting with version 1.4.8, Aerial now includes the open source project [Sparkle](https://sparkle-project.org) to provide automatic updates. You can configure if and how you want this to work in the `Updates` tab: + +![Capture d’écran 2019-05-30 à 11 45 55](https://user-images.githubusercontent.com/37544189/58624482-a5eb9900-82d0-11e9-8a93-0aeb71988802.jpg) + +What you are seeing above are the out-of-the-box default. + +## Understanding the two settings + +Because Aerial is "just" a screen saver (technically, a plugin to System Preferences), providing updates is slightly more involved and because of this, we have two, separate, automatic update mechanisms with two separate settings to control them: + +- The first setting controls whether you want automatic updates or not. This check is done periodically (if 24 hours elapsed since last check), but *only* when the screen saver panel (the one you see in the screenshot) is open. When an update is available, you will see this window pop: + +![Capture d’écran 2019-05-30 à 11 58 34](https://user-images.githubusercontent.com/37544189/58625280-6a51ce80-82d2-11e9-8dd0-a5ed92fa74f4.jpg) + +You can then decide if you want to install or not, the checkbox controls whether you want this to be done automatically for you *for this specific mechanism*. + +- The second setting controls whether you want Aerial to update itself while the screen saver is running. Because most people don't fiddle everyday with their screen saver settings, we've added this secondary mechanism to Aerial so everyone can stay up to date. Unlike the first mechanism above, this one is silent, and having this option enabled will automatically install the latest update without prompting you. The check is periodic (if 24 hours elapsed since last check), and done when the screen saver starts. If an update is available, the screen saver will exit, install the update, and open system preferences with the new version of Aerial. Your system will go back to sleep eventually. + +While we recognize that the second mechanism is highly perfectible, this is the only workaround we've found with Sparkle to provide automatic updates while Aerial runs, or without having some sort of "helper" app always running on your system to check for updates. Unless you want to manualy manage your updates, we highly recommend you keep this checked! + +## Beta updates + +The third checkbox lets you opt-in to the beta updates. Beta releases are used to test fixes to reported issues, latest videos and new features. They are usually pretty stable. If you want those beta versions, you can enable this checkbox. Note that when a new non-beta release is available after the beta process, it will also be available in the beta track, so you are always up to date! + +## What kind of network traffic does that entail? + +When a check happens, the auto update loads a [XML file from the GitHub repository](https://github.com/JohnCoates/Aerial/blob/master/appcast.xml) for the new updates. The updates are then downloaded from the GitHub repository's "Releases" section, the download link is included in the XML, they are always in the form of `https://github.com/JohnCoates/Aerial/releases/download/v1.5.0/Aerial.saver.zip` . + +While Sparkle optionally allows to [collect anonymous user data](https://sparkle-project.org/documentation/system-profiling/), we **do not** use this feature and **do not** collect any form of data whatshowever. + +## Security? + +Each update is signed with a private EdDSA key when a release is built by the maintainer ([glouel](https://github.com/glouel). The [appcast.xml](https://github.com/JohnCoates/Aerial/blob/master/appcast.xml) provides that signature (and file size, for example for 1.4.9 : `sparkle:edSignature="5QFV0eqGRqCoZ8/TYbLXWOiVSifwNRUk4wuNFdjXJXpk/cRrceaTcs7SG168dawfOTpy9TOu283mb6WJGRQuDw==" length="5674805"` ) which will be checked against the public key bundled with Aerial. If the signature doesn't match, the update won't be installed. Each `Aerial.saver` is also signed with my ([glouel](https://github.com/glouel)) Apple ID certificate, which is also [checked by Sparkle](https://github.com/sparkle-project/Sparkle/issues/1283). + +## Installed for all users and password prompt + +If you installed the screen saver for all users the first time (instead of for your individual user), macOS prompted you at install for your administrator password. The same thing will happen for automatic updates with the two mechanisms. Because of this, with the "Auto update when screen saver runs" checked, you will get a password prompt from Aerial/Sparkle when waking up your system. + +This is working as intended for macOS, if you are bothered by those prompt, consider reinstalling Aerial for your user account only. If you have multiple accounts, you can still install Aerial for each account, by default each will use the same shared cache for videos (in `/Library/Caches/Aerial/`). + +## Homebrew and auto-updates + +If you installed Aerial through Homebrew, you will get updates automatically from that channel. Note that because of the way brew cask works, it may take a few hours for the update to show, compared to the Sparkle auto-update. We recommend that you disable the built in auto-updates if you use Homebrew. diff --git a/Documentation/ChangeLog.md b/Documentation/ChangeLog.md new file mode 100644 index 00000000..41f0a93d --- /dev/null +++ b/Documentation/ChangeLog.md @@ -0,0 +1,106 @@ +# Aerial change log + +## [1.5.0](https://github.com/JohnCoates/Aerial/releases/tag/v1.5.0) - May 31, 2019 + +- Completely rewritten multi monitor support. You can now enable and disable individual displays in the new Display tab: + +![Capture d’écran 2019-05-29 à 14 44 01](https://user-images.githubusercontent.com/37544189/58558340-d116af80-8220-11e9-9081-696d805c1e29.jpg) + +- New "Spanned" viewing mode. Selecting this mode will span an Aerial video on all your (selected) screens. You can even adjust margins: + +![Capture d’écran 2019-05-29 à 14 43 52](https://user-images.githubusercontent.com/37544189/58558342-d116af80-8220-11e9-8bb0-8d26f1e1b6ed.jpg) + +- Add your own videos to Aerial using the new Custom Videos features. You can add your own videos in the new video manager (found in the menu below the video list): + +![Capture d’écran 2019-05-30 à 18 01 36](https://user-images.githubusercontent.com/37544189/58646171-24fac480-8305-11e9-98fd-c9ec7ef3a64c.jpg) + +You can find more [information here](CustomVideos.md). + +- You can now remove a single video from cache by right clicking it. +- Sparkle updated to 1.21.3. +- And many bug fixes! + +## [1.4.9](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.9) - May 1, 2019 + +- Fix a crashing bug in 1.4.8 for homebrew users. + +## [1.4.8](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.8) - April 30, 2019 + +- Add support for the 5 new 4K videos (January 25th update). +- Automatic updates through Sparkle. + +![Capture d’écran 2019-04-30 à 18 31 20](https://user-images.githubusercontent.com/37544189/56977789-4afe3f00-6b76-11e9-9985-1ca1a1866d6b.jpg) + +- Localization for community support in Arabic, Chinese Simplified, English, French, German, Hebrew, Polish and Spanish! Thanks to all the contributors. If you want to help, check here, we very much welcome new contributions ! +- You can now skip an Aerial with the right arrow key. +- You can now save your favorite videos sets to enable them quickly (look for the bookmark icon below the video list). +- And many bug fixes! + +## [1.4.6](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.6) - December 28, 2018 + +- **25 extra videos now available in 4K:** Following the content updates from October 30th and December 5th, Aerial now includes 70 videos, 60 of which are also available in 4K. Aerial will periodically check for new videos, you can disable this feature in the `Cache` tab. + +![screen shot 2018-10-29 at 13 21 05](https://user-images.githubusercontent.com/37544189/47649972-1f76a980-db7f-11e8-910b-1d5d50931ae2.png) + +- **Show videos in Quicktime:** You can now right click a video to open it in Quicktime. +- **Remove video duplicates:** Aerial can now cleanup your old videos (They are periodically updated to fix colors, provide longer versions of previously existing videos, or upgraded to 4K). Go to the `Advanced` Tab and either move the files away or send them to the trash to reclaim free space. The `Move old videos` button will move the video files to a directory created within the Aerial cache called `oldvideos`, which will contain a dated directory within it. You can find them at `/Users/YOURUSERNAME/Library/Caches/Aerial/oldvideos/YYYY-MM-DD` + +![capture d ecran 2018-12-13 a 15 06 49](https://user-images.githubusercontent.com/37544189/49943901-60394080-fee9-11e8-93b0-3cc68087b70e.png) + + +## [1.4.5](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.5) - November 3, 2018 + +- **More battery controls:** Using Aerial on a Macbook ? You can now specify a different video format on battery mode if you wish, or simply video playback using the Power Saving mode (Aerial will show a blank screen and reduce screen brightness instead of showing videos). +- You can now show day/night videos based on Dark Mode. +- And many bug fixes! + +## [1.4.4](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.4) - October 29, 2018 + +- New sunset/sunrise dusk/dawn calculation modes from coordinates, Aerial can gather your location using your Mac's location service (you'll be asked for permission). Includes multiple calculations modes for dusk to better suite everyone's needs + +![screen shot 2018-10-29 at 13 24 46](https://user-images.githubusercontent.com/37544189/47649974-1f76a980-db7f-11e8-8339-3f0424652b8c.png) + +- Control brightness, Aerial can progressively dim the brightness of your screen when it plays. Includes extra options to only enable at night or on battery + +![screen shot 2018-10-29 at 13 25 10](https://user-images.githubusercontent.com/37544189/47649975-200f4000-db7f-11e8-9e8b-f75c4a5ebde4.png) + +- Add an option to define the margins from the border where descriptions should appear, changed the default for something more sensible +- And many bug fixes/ui tweaks! + +## [1.4.3](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.3) - October 23, 2018 + +- Fix a memory retain cycle while downloading or playing cached videos + +## [1.4.2](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.2) - October 23, 2018 + +- Community location description, with better descriptions on many of the older videos (english only for this version) +- Updated video names +- Added logging options in Advanced panel, with better error messages when something goes wrong +- You can now stop video downloads +- You can now disable seconds on clock +- We now have a retina(ish) thumbnail in System Preferences + +## [1.4.1](https://github.com/JohnCoates/Aerial/releases/tag/v1.4.1) - October 16, 2018 + +- Better names for the videos +- New location information for "old" videos (London, SF, etc) +- You can now change the font/size of the location information displayed during videos +- New options for text display (custom message, same styled clock, etc) +- Add a "Main display only" option for multiple monitor setups + +## [1.4.0](https://github.com/JohnCoates/Aerial/releases/tag/v1.4) - October 11, 2018 + +- Every Aerial video: From the very first Aerials in San Francisco to the new space videos shot from the ISS! +- 4K HEVC: With the launch of Apple TV 4K, many videos are now available in this format. Aerial will show you the best format available based on your preferences. +- Different videos based on time: Want to see night videos at night? You can either specify your sunset or sunrise time manually, or, if your Mac is compatible with Night Shift (see here for a list of compatible Mac), get those automatically (you do not need to enable Night Shift). +- Feeling Dark?: Aerial is now compatible with Dark Mode in macOS 10.14 Mojave, and can play night videos when Dark Mode is enabled. +- Descriptions: Wondering where an Aerial view was shot? Aerial can now tell you as they play. +- Full offline mode:: Behind a firewall? Just copy the cache folder from another Mac and you are all set. You can also disable all streaming. +Better cache management: You can now cache your favorite videos individually, no need to grab them all. Or just stream them as you go, they'll get cached automatically too. + + +## [1.2beta5](https://github.com/JohnCoates/Aerial/releases/tag/v1.2beta5) - December 28, 2016 + +- Latest beta from @JohnCoates + +You can find more information about older versions and betas in the project [Release history](https://github.com/JohnCoates/Aerial/releases). diff --git a/Documentation/CustomVideos.md b/Documentation/CustomVideos.md new file mode 100644 index 00000000..ecbb5138 --- /dev/null +++ b/Documentation/CustomVideos.md @@ -0,0 +1,36 @@ +# Add your own videos to Aerial + +Starting with version 1.5.0 of Aerial, you can now add your own videos to the playlilst. In order to do this, click "Custom Videos..." at the bottom of the menu: + +![Capture d’écran 2019-05-24 à 17 13 22](https://user-images.githubusercontent.com/37544189/58338271-c090be80-7e47-11e9-833a-d70ada56232b.jpg) + +This will open the "Manage Custom Videos" window. + +![Capture d’écran 2019-05-30 à 17 45 15](https://user-images.githubusercontent.com/37544189/58646170-24622e00-8305-11e9-9235-9e7960bdf95e.jpg) + +Click the "Add folder" at the top of the window, and point it to a folder that contains videos. Aerial will scan that folder and show you the videos it found in the left panel. For long time users, a good way to try this is your `oldvideos` folder in your Aerial cache folder. + +## Folders and files + +Aerial will scan your folder for video files, including subfolders. After scanning, all these video files will show up in the left column, grouped under the name of the folder you picked. + +![Capture d’écran 2019-05-24 à 17 13 44](https://user-images.githubusercontent.com/37544189/58338555-36952580-7e48-11e9-8f9b-4e69a48dc11b.jpg) + +You can override that name here. This folder name will be used to categorize those videos in the playlist, akin to the classical "city/country" category you see for Aerial videos. If you use an existing name (for example "Los Angeles"), videos will be merged in the playlist. + +If you click a file, you'll get the asset editor: + +![Capture d’écran 2019-05-30 à 18 01 36](https://user-images.githubusercontent.com/37544189/58646171-24fac480-8305-11e9-98fd-c9ec7ef3a64c.jpg) + + +You can change the name of the video, whether it's a day or night video (by default every file is imported as day) and let's you add points of interests. Points of interests are the descriptions that are shown periodically on screens when videos play. The format is simple, a time in seconds, and the description you would like to appear. We highly recommend you leave at least 10 to 15 seconds between two points of interests. + +![Capture d’écran 2019-05-29 à 12 52 29](https://user-images.githubusercontent.com/37544189/58552781-8478a780-8213-11e9-99bc-2b55c75b6bd3.jpg) + +## How is this stored ? + +When you close the window, all the information will be saved in a `customvideos.json` file in your Aerial cache folder. The format is close to the tvOS12 format, and can be edited manually. + +## Video formats/containers supported + +As of version 1.5.0, Aerial will only look for .mov or .mp4 files (if you would like to see another extension added, please let us know but keep reading first). Aerial uses Apple's AVFoundation framework to play videos. Long story short, in theory anything that QuickTime Player X can play, will work with Aerial. As of macOS Mojave, this means that some container formats such as mkv won't be supported. diff --git a/Documentation/HardwareDecoding.md b/Documentation/HardwareDecoding.md new file mode 100644 index 00000000..5079a27b --- /dev/null +++ b/Documentation/HardwareDecoding.md @@ -0,0 +1,17 @@ +# About HEVC and hardware decoding, and HDR + +Aerial uses Apple's [AVFoundation framework](https://developer.apple.com/documentation/avfoundation) to play the videos as your screen saver. When available, AVFoundation will use hardware decoding (from your CPU or your graphics card) to minimize the resources needed for video playback. You can find guidelines in the help button next to the `Preferred video format` setting. By default, Aerial uses 1080p H.264 videos which is the most compatible format. Please note that all 4K HEVC videos are encoded with the `Main10` profile, which may not be hardware accelerated by your machine, while some other HEVC videos (encoded in `Main` profile) will be. + +While we wish to provide everyone with the best setting for their machine, the GVA framework from Apple doesn't let us distinguish HEVC `Main10` profile acceleration from general HEVC acceleration. Early feedback we gathered also seems to point that on machines with multiple decoding options (Intel QuickSync and AMD UVD), QuickSync will always be preferred (even if you "force" the discrete GPU use with an external monitor or via code, as of macOS Mojave). + +These are our recommendations so far: + +- Macs older than 2011 may lack H.264 acceleration. +- Macs with an Intel CPU (With iGPU) from the Sandy Bridge (2011) generation to Broadwell (Early 2015) should have H.264 hardware acceleration available. +- Late 2015 and 2016 Macs (Skylake and Kaby Lake) may only have partially accelerated HEVC decoding. We recommended you stick to 1080p H.264 on laptops. You may consider the HEVC format on desktops but understand that decoding may be CPU intensive and spin up your fans. +- Macs 2017 and up should have full HEVC acceleration. + +You can easily check for yourself what to expect by opening a video in Quicktime (Use the `Show in Finder` option in the `Cache` tab to find the cached videos). In Activity Monitor, the AV Framework GVA process is called `VTDecoderXPCService`. + +Please note that as of macOS Mojave, AVFoundation is not able to play the HDR versions of the videos that you can see on Apple TV. + diff --git a/Documentation/Installation.md b/Documentation/Installation.md new file mode 100644 index 00000000..090a2efe --- /dev/null +++ b/Documentation/Installation.md @@ -0,0 +1,59 @@ +# Installation, setup and uninstallation + +## Installation instructions + +Aerial now includes an auto-update mechanism using the [Sparkle open-source project](https://github.com/sparkle-project/Sparkle) (with EdDSA signatures). You will need to download it manually the first time : + +### First Installation + +_Rather install from Terminal? Look at the Brew Cask section below!_ + +1. Quit **System Preferences**. +2. [Download the latest release of Aerial.saver.zip](https://github.com/JohnCoates/Aerial/releases/latest). Alternatively, you can try the latest beta version [following this link](https://github.com/JohnCoates/Aerial/releases). +3. Unzip the downloaded file (if you use Safari, it should already be done for you). +4. Double-click `Aerial.saver`; it will open in `System Preferences` > `Desktop & Screen Saver` and ask you if you want to install for all users or for your user only. Be aware that installing for all users will require a password at install **and each subsequent update, including auto-updates.** + +If you see an error message saying "This app is damaged and can't be opened, you should move it to the trash", we suggest that **you download the file with Safari**, to prevent macOS Gatekeeper from throwing that error. Note that some outdated unzip software may cause that issue too. + +On very recent releases (less than a day), Chrome may complain that the file is uncommon and potentially dangerous. This warning will go away after a few hours/days, more information in our [troubleshooting section](Troubleshooting.md). + +**Important**: If you haven't quit System Preferences before installation, you will need to quit and reopen System Preferences after installation for Aerial to work correcly. This is a macOS bug. + +### Brew Cask Support + +If you're looking to install Aerial across many systems, remotely, or simply from Terminal we recommend [Brew Cask](https://caskroom.github.io). + +Simply issue the following Terminal command: + +```sh +brew cask install aerial +``` + +To upgrade Aerial, run the following Terminal command: + +```sh +brew cask upgrade aerial +``` + +Please note that if you prefer using homebrew to update Aerial, we recommend you disable Sparkle auto updates in the `Updates`tab. + +## Setting Aerial as Your Screen Saver + +1. Open `System Preferences` -> `Desktop & Screen Saver` -> `Screen Saver` +2. Choose Aerial and click on `Screen Saver` Options to select your settings. + +![screen shot 2018-10-29 at 13 17 23](https://user-images.githubusercontent.com/37544189/47649971-1f76a980-db7f-11e8-97be-d1f90b943c9d.png) + +## Uninstallation + +There are three ways to uninstall Aerial from your Mac. + +- Right-click on the Aerial screen saver in `System Preferences` and select `Delete "Aerial"`. This will uninstall the screen saver automatically. +- If you prefer, you can delete the files manually. macOS can store screen savers in two locations depending on your choices, `/Library/Screen Savers` (if you installed for All Users) and `/Users/YOURUSERNAME/Library/Screen Savers` (installed for your user only). Check both locations for a file called `Aerial.saver` and delete any copies you find. +- If you installed Aerial using Brew Cask, then enter the following command in a Terminal window to uninstall: + +```sh +brew cask uninstall aerial. +``` + +You may also want to delete the folder `/Library/Caches/Aerial` (default Aerial cache folder on most systems, even if you installed for your user account only) or `/Users/YOURUSERNAME/Library/Caches/Aerial`. This is where Aerial stores the cached copies of the Aerial videos. The last thing, you may want to delete the preferences `plist`. The file is `/Users/YOURUSERNAME/Library/Preferences/ByHost/com.JohnCoates.Aerial.{UUID}.plist`. diff --git a/Documentation/OfflineMode.md b/Documentation/OfflineMode.md new file mode 100644 index 00000000..d38077c0 --- /dev/null +++ b/Documentation/OfflineMode.md @@ -0,0 +1,13 @@ +# Offline Mode + +If you want to use Aerial on a Mac behind a firewall or with no network access, the easiest way starting is to copy the content of the cache folder from another Mac where Aerial is already installed. + +If that's not an option, you can manually recreate a cache folder by downloading files manually. + +- Download and untar `https://sylvan.apple.com/Aerials/resources.tar` (tvOS12 resources, keep the tar _and_ extracted files) +- Download and rename `https://sylvan.apple.com/Aerials/2x/entries.json` to `tvos11.json` (tvOS11 resources, also in 4K) +- Download and rename `http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json` to `tvos10.json` (The original Aerials, in 1080p H.264 only) + +You can then download the videos you want from the JSON files. In the 4K JSONs, you are looking for the `url-1080-H264` (1080p H.264, most compatible format), `url-1080-SDR` (1080p HEVC, better quality, requires a recent Mac for hardware decoding) or `url-4K-SDR` (4K HEVC). + +Please try to download the videos in the order mentionned (tvOS12 first) as videos routinely gets replaced with better versions. Because you will be downloading files manually, you will end up with many duplicate versions of the same videos. You can clean them up by going into the `Advanced` tab and use the `Trash old videos` feature there. You can find more information about the process [in this issue](https://github.com/JohnCoates/Aerial/issues/781#issuecomment-493677816) diff --git a/Documentation/README.md b/Documentation/README.md new file mode 100644 index 00000000..b139df47 --- /dev/null +++ b/Documentation/README.md @@ -0,0 +1,17 @@ +# Welcome to Aerial's documentation + +This documentation is still a work in progress, if you have any further question don't hesitate to post an issue. + + +- [Troubleshooting information](Troubleshooting.md) + + + +- [Aerial's Change log](ChangeLog.md) + + + +- [Offline mode and no network access.](OfflineMode.md) +- [HEVC, HDR and hardware decoding](HardwareDecoding.md) +- [How to add your own videos to Aerial](CustomVideos.md) +- [Auto-updates](AutoUpdates.md) diff --git a/Documentation/Troubleshooting.md b/Documentation/Troubleshooting.md new file mode 100644 index 00000000..fde593a7 --- /dev/null +++ b/Documentation/Troubleshooting.md @@ -0,0 +1,28 @@ +# Troubleshooting + +## Very common issues/macOS bugs + +- "You cannot use the Aerial screen saver with this version of macOS." error: Select Aerial, close `System Preferences` with Aerial still selected, re-open System Preferences and Aerial should now work. This is a known bug with Swift screen savers in macOS/OS X reported (a long time ago...) to Apple as [rdar://25569037](http://www.openradar.me/25569037). +- "This app is damaged and can't be opened, you should move it to the trash" when double-clicking the `Aerial.saver` file: Please see the [installation notes](Installation.md), this is a GateKeeper issue. +- Chrome complains that "This download is uncommon and potentilally malicious" on very fresh releases. Google seems to flag very recent files as "uncommon" and may block the download (more info on [Google's site here](https://support.google.com/chrome/answer/6261569). After a few hours/days, this warning will disappear. More info in this [issue](https://github.com/JohnCoates/Aerial/issues/759#issuecomment-489616050). +- Can't use Aerial as a login screen saver: As far as we know, using 3rd party screen savers before login is no longer possible on modern versions of macOS (probably and rightly so for securoty reasons). More about this [here](https://github.com/JohnCoates/Aerial/issues/571). + +## About video caching + +- Change cache location : This option simply changes _the location_ of the Cache folder that Aerial uses. It does _not_ move your files for you. Please note that this change will only be taken into account the next time Aerial starts (you may need to fully close System Preferences). We strongly recommend you use a path that's always accessible, as Aerial **can't work** without a Cache directory. In case the path is no longer available (missing USB key, etc), starting with Aerial 1.4.7, it will reset the Cache location to it's default location (usually `/Library/Caches/Aerial/` or, if unavailable `~/Library/Caches/Aerial`) to avoid crashing. +- Videos keeps disappearing, Aerial may not restart once in a while: Aerial stores all it's data in a Cache folder. This cache may get deleted by some third party software trying to free disk space. If you use such a "Cleaning" tool, we recommend you set a manual folder location in the Cache tab of Aerial. For example, you can create an Aerial folder in your User folder, and point to it. This will ensure Aerial files don't get deleted. +- Black screen: If you are behind a firewall (Like Little Snitch or Hands Off!) try creating exceptions for Aerial to allow it access to Apple's servers. Be sure the applications `ScreenSaverEngine.app` and `System Preferences.app` are not being blocked access to `*.phobos.apple.com`, `*.phobos.apple.com.edgesuite.net` and `sylvan.apple.com`. If that isn't an option, please look at the [Offline mode](OfflineMode.md) documentation. + +## Bugs related to old versions +*Tip : you can see the version number in the bottom right corner of the preference panel. If you don't see a version number, your version is SEVERELY outdated (1.2 or below)!* + +- "Done" button doesn't close Aerial: Please update to latest available version, this is a bug on Mojave with very old versions of Aerial (1.2 and below). +- Not seeing extended descriptions: Make sure you have version 1.4.2 or above. +- Can't type into text fields with macOS High Sierra/Video corruption issue on High Sierra: Please make sure you have at least version 1.4.5. +- Aerial logs you out of your user account everytime it starts: This looks like a new bug with macOS 10.14.5 beta 18F108f (similar to the Video corruption issue on High Sierra above), possibly only for Macs with Intel graphics. Please update to Aerial 1.5.0. More information here : https://github.com/JohnCoates/Aerial/issues/738 + +# Misc. + +- Brightness control does not control external displays: Aerial uses the brightness API from macOS to change the brightness of your screens. As of version 1.5.0, this does not allow us to control the brightness of external screens. +- High CPU usage/fan spinning all of a sudden: If you correctly configured the preferred video format [according to your Mac](HardwareDecoding.md) and still experience high CPU usage/fan spinning all of a sudden, please look for the cause with `Activity Monitor`, you may see a `com.apple.photos.ImageConversionService` responsible for this CPU load. This is the iCloud Photos process, you can find more about [what it does here](https://support.apple.com/en-gu/HT204264) and how to pause it. + diff --git a/Readme.md b/Readme.md index 336cd26d..b9668275 100644 --- a/Readme.md +++ b/Readme.md @@ -13,86 +13,48 @@ Aerial is completely open source, so feel free to contribute to its development. [![Code Climate](https://codeclimate.com/github/JohnCoates/Aerial/badges/gpa.svg)](https://codeclimate.com/github/JohnCoates/Aerial) [![codecov](https://codecov.io/gh/JohnCoates/Aerial/branch/master/graph/badge.svg)](https://codecov.io/gh/JohnCoates/Aerial) -###### Windows user? Try [cDima/Aerial](https://github.com/cDima/Aerial/) +###### Windows user? Try [cDima/Aerial](https://github.com/cDima/Aerial/) Linux user? Try [graysky2/xscreensaver-aerial](https://github.com/graysky2/xscreensaver-aerial/) -###### Linux user? Try [graysky2/xscreensaver-aerial](https://github.com/graysky2/xscreensaver-aerial/) +Aerial was started in 2015 by John Coates ([Twitter](https://twitter.com/JohnCoatesDev), [Email](mailto:john@johncoates.me)) -#### Coded with Love by John Coates ([Twitter](https://twitter.com/JohnCoatesDev), [Email](mailto:john@johncoates.me)) - -Starting with version 1.4, Aerial is also maintained by: - -- [Guillaume Louel](https://github.com/glouel) ([Twitter](https://twitter.com/C_Wiz)) +Starting with version 1.4, Aerial is also maintained by [Guillaume Louel](https://github.com/glouel) ([Twitter](https://twitter.com/C_Wiz), [PayPal](https://paypal.me/glouel?locale.x=fr_FR)). You can see a list of contributors [here](https://github.com/JohnCoates/Aerial/graphs/contributors). ## Installation -### Manual Installation - -_Rather install from Terminal or have auto-updates? Look at the Brew Cask section below!_ +Aerial now includes an auto-update mechanism using the [Sparkle open-source project](https://github.com/sparkle-project/Sparkle). You will need to download it manually the first time : 1. Quit **System Preferences**. -2. [Download the latest release of Aerial.saver.zip](https://github.com/JohnCoates/Aerial/releases/latest). (Version 1.4.9, May 1st 2019). Alternatively, you can try the latest beta version [following this link](https://github.com/JohnCoates/Aerial/releases). +2. [Download the latest release of `Aerial.saver.zip`](https://github.com/JohnCoates/Aerial/releases/latest). Alternatively, you can try the latest beta version [following this link](https://github.com/JohnCoates/Aerial/releases). 3. Unzip the downloaded file (if you use Safari, it should already be done for you). -4. Double-click `Aerial.saver`; it will open in `System Preferences` > `Desktop & Screen Saver` and ask you if you want to install for all users or for your user only. - - If you see an error message saying "This app is damaged and can't be opened, you should move it to the trash", we suggest that **you download the file with Safari**, to prevent macOS Gatekeeper from throwing that error. Note that some outdated unzip software may cause that issue too. - - **Important**: If you haven't quit System Preferences before installation and were upgrading from a previous version, we strongly recommend you quit the application after installation, then reopen it, as updated Swift screensavers aren't loaded correctly in an active System Preferences session. - -### Brew Cask Support - (Updated to 1.4.9) - -If you're looking to install Aerial across many systems, remotely, or simply from Terminal we recommend [Brew Cask](https://caskroom.github.io). Prefer this method if you're looking for auto-updates. - -Simply issue the following Terminal command: - -```sh -brew cask install aerial -``` - -To upgrade Aerial, run the following Terminal command: - -```sh -brew cask upgrade aerial -``` - -Please note that if you prefer using homebrew to update Aerial, we recommend you disable Sparkle auto updates in the `Updates`tab. +4. Double-click `Aerial.saver`; it will open in `System Preferences` > `Desktop & Screen Saver` and ask you if you want to install for all users or for your user only. Be aware that installing for all users will require a password at install **and each subsequent update, including auto-updates.** By default, Aerial will still share it's video cache if you install multiple times on the same system for each user. -## Setting Aerial as Your Screen Saver +Need more information on install, setup, or uninstall ? Or want to install via homebrew ? Check our extended [instructions here](Documentation/Installation.md). Curious about auto-updates ? [Have a look here](Documentation/AutoUpdates.md). -1. Open `System Preferences` -> `Desktop & Screen Saver` -> `Screen Saver` -2. Choose Aerial and click on `Screen Saver` Options to select your settings. +## What's new in Aerial 1.5.0 (May 31 2019)? -![screen shot 2018-10-29 at 13 17 23](https://user-images.githubusercontent.com/37544189/47649971-1f76a980-db7f-11e8-97be-d1f90b943c9d.png) +- Completely rewritten multi monitor support. You can now enable and disable individual displays in the new Display tab. There is also a new "Spanned" viewing mode. Selecting this mode will span an Aerial video on all your (selected) screens. You can even adjust the margins between your screens: -## Uninstallation +![Capture d’écran 2019-05-29 à 14 43 52](https://user-images.githubusercontent.com/37544189/58558342-d116af80-8220-11e9-8bb0-8d26f1e1b6ed.jpg) -There are three options to uninstall Aerial from your Mac. +- You can now add your own videos to Aerial using the new [Custom Videos feature](Documentation/CustomVideos.md), and play them alongside Aerial videos: -- Right-click on the Aerial screensaver in `System Preferences` and select `Delete "Aerial"`. -- Or delete the file(s) directly. macOS can store screen savers in two locations. `/Library/Screen Savers` and `/Users/YOURUSERNAME/Library/Screen Savers`. Check both locations for a file called `Aerial.saver` and delete any copies you find. -- If you installed Aerial using Brew Cask, then enter the following command in a Terminal window to uninstall: +![Capture d’écran 2019-05-30 à 18 01 36](https://user-images.githubusercontent.com/37544189/58646171-24fac480-8305-11e9-98fd-c9ec7ef3a64c.jpg) -```sh -brew cask uninstall aerial. -``` +You can find more about [version changes here](Documentation/ChangeLog.md). -You may also want to delete the folder `/Users/YOURUSERNAME/Library/Caches/Aerial` (or `/Library/Caches/Aerial`). This is where Aerial stores the cached copies of the Aerial videos. The last thing, you may want to delete the preferences `plist`. The file is `/Users/YOURUSERNAME/Library/Preferences/ByHost/com.JohnCoates.Aerial.{UUID}.plist`. - -## New features in 1.4.8 - -This latest version includes many new features and enhancements: - -- **5 new videos available in 4K:** Following the content update from January 25th, Aerial now includes 73 videos, 65 of which are also available in 4K. Aerial will periodically check for new videos, you can manage this in the `Updates` tab. -- **Automatic updates support through Sparkle:** Aerial now uses Sparkle to automatically updates itself, including when your screensaver runs. All of this can be managed in the `Updates` tab. +## Compatibility -![Capture d’écran 2019-04-30 à 18 31 20](https://user-images.githubusercontent.com/37544189/56977789-4afe3f00-6b76-11e9-9985-1ca1a1866d6b.jpg) +Aerial is written in Swift, which requires OS X Mavericks (10.9) or above. -- **Localization for community support** in Arabic, Chinese Simplified, English, French, German, Hebrew, Polish and Spanish! Thanks to all the contributors. If you want to help, please [read the details here](Resources/Community/Readme.md). -- **You can now skip an Aerial with the right arrow key** -- **You can now save your favorite videos sets to enable them quickly** +## Community -Capture d’écran 2019-04-19 à 14 28 55 +- **Found a bug?** Sorry about that! Make sure you are running the latest version and please check our [troubleshooting page](Documentation/Troubleshooting.md) and [our issues](https://github.com/JohnCoates/Aerial/issues), as someone may already have reported it (a beta may be available with the fix you need). Feel free to [open an issue](https://github.com/JohnCoates/Aerial/issues/new), try to be as specific as possible. +- **Have fixed a bug?** We appreciate all pull requests. +- **Can you translate videos names and their descriptions?**. Awesome! [Read here for details](Resources/Community/Readme.md) on how to help us. +- **Have a feature request?** [Open an issue](https://github.com/JohnCoates/Aerial/issues/new). Tell us why it would be useful, and why you and others would want it. +- **Curious about the videos and on a slow connection?** Check [this guide](https://paper.dropbox.com/doc/Aerial-macOS-screen-saver-list-with-version-1.4.6-HvOeL0gNhLpqpIFgmLHaS) by [Hidehiro Nagaoka](https://github.com/hidehiro98). ## Multilanguage support @@ -104,89 +66,15 @@ These descriptions are available in many languages (Spanish, French, Polish… [ If you want to collaborate, please [read the details here](Resources/Community/Readme.md). -## Features - -![screen shot 2018-10-29 at 13 21 05](https://user-images.githubusercontent.com/37544189/47649972-1f76a980-db7f-11e8-910b-1d5d50931ae2.png) - -- **Every Aerial video:** From the very first Aerials in San Francisco to the new space videos shot from the ISS! Now with better titles too so you can find your favorite videos faster. -- **4K HEVC:** With the launch of Apple TV 4K, many videos are now available in this format (With version 1.4.6, 60 of the 70 videos are available in 4K!). Aerial will show you the best format available, based on your preferences. - -![screen shot 2018-10-29 at 13 24 36](https://user-images.githubusercontent.com/37544189/47649973-1f76a980-db7f-11e8-8aef-301307d48fa2.png) - -- **Different videos based on time:** Want to see night videos at night? Aerial can calculate for you the dusk/dawn times. You can also use Night Shift sunset and sunrise detection (See [here for a list of compatible Macs](https://support.apple.com/en-us/HT207513), you do not need to enable Night Shift). -- **Feeling Dark?:** Aerial is now compatible with Dark Mode in macOS 10.14 Mojave and can play night videos when Dark Mode is enabled. - -![screen shot 2018-10-29 at 13 24 46](https://user-images.githubusercontent.com/37544189/47649974-1f76a980-db7f-11e8-8339-3f0424652b8c.png) - -- **Descriptions:** Wondering where an Aerial view was shot? Aerial can now tell you as they play. We even have extended descriptions written by our community of users. Help us to improve these descriptions by [translating them to your language](Resources/Community/Readme.md). - -![screen shot 2018-10-29 at 13 25 10](https://user-images.githubusercontent.com/37544189/47649975-200f4000-db7f-11e8-9e8b-f75c4a5ebde4.png) - -- **Remove video duplicates:** Aerial can now cleanup your old videos (They are periodically updated to fix colors, provide longer versions of previously existing videos, or upgraded to 4K). Go to the `Advanced` Tab and either move the files away or send them to the trash to reclaim free space. The `Move old videos` button will move the video files to a directory created within the Aerial cache called `oldvideos`, which will contain a dated directory within it. You can find them at `/Users/YOURUSERNAME/Library/Caches/Aerial/oldvideos/YYYY-MM-DD` - -![capture d ecran 2018-12-13 a 15 06 49](https://user-images.githubusercontent.com/37544189/49943901-60394080-fee9-11e8-93b0-3cc68087b70e.png) - -- **Brightness control:** Aerial can progressively dim the brightness of your screens before your Mac goes to sleep. You can even enable this feature only at night, or only on battery if you prefer. -- **Full offline mode:** Behind a firewall? Just copy the cache folder from another Mac and you are all set. You can also disable all streaming. -- **Better cache management:** You can now cache your favorite videos individually, no need to grab them all. Or just stream them as you go, they'll get cached automatically too. -- **Show videos in Quicktime:** You can now right click a video to open it in Quicktime. -- **More battery controls:** Using Aerial on a Macbook? You can now specify a different video format on battery mode if you wish, or simply video playback using the Power Saving mode (Aerial will show a blank screen and reduce screen brightness instead of showing videos). -- **Clock:** We even have a properly styled clock if that's your thing! -- **And many bug fixes!** - -## Compatibility - -Aerial is written in Swift, which requires OS X Mavericks (10.9) or above. - -## Community - -- **Found a bug?** [Open an issue](https://github.com/JohnCoates/Aerial/issues/new). Try to be as specific as possible. -- **Have fixed a bug?** We appreciate all pull requests. -- **Can you translate the video descriptions?**. Awesome! [Read here for details](Resources/Community/Readme.md) on how to help us. -- **Have a feature request?** [Open an issue](https://github.com/JohnCoates/Aerial/issues/new). Tell us why it be useful, and why you and others would want it. -- **Curious about the videos and on a slow connection?** Check [this guide](https://paper.dropbox.com/doc/Aerial-macOS-screen-saver-list-with-version-1.4.6-HvOeL0gNhLpqpIFgmLHaS) by [Hidehiro Nagaoka](https://github.com/hidehiro98). - -## Offline Mode - -If you want to use Aerial on a Mac behind a firewall or with no network access, the easiest way starting with version 1.4 is to copy the content of the cache folder from another Mac where Aerial is already installed. - -If that's not an option, you can manually recreate a cache folder by downloading files manually. - -- Download and untar `https://sylvan.apple.com/Aerials/resources.tar` (tvOS12 resources, keep the tar _and_ extracted files) -- Download and rename `https://sylvan.apple.com/Aerials/2x/entries.json` to `tvos11.json` (tvOS11 resources, also in 4K) -- Download and rename `http://a1.phobos.apple.com/us/r1000/000/Features/atv/AutumnResources/videos/entries.json` to `tvos10.json` (The original Aerials, in 1080p H.264 only) - -You can then download the videos you want from the JSON files. In the 4K JSONs, you are looking for the `url-1080-H264` (1080p H.264, most compatible format), `url-1080-SDR` (1080p HEVC, better quality, requires a recent Mac for hardware decoding) or `url-4K-SDR` (4K HEVC). As of macOS Mojave, the HDR versions of these videos won't play on Quicktime or AVFoundation, so avoid them. - -## About HEVC and hardware decoding - -Aerial uses Apple's [AVFoundation framework](https://developer.apple.com/documentation/avfoundation) to play the videos as your screensaver. When available, AVFoundation will use hardware decoding (From your CPU or your graphics card) to minimize the resources needed for video playback. You can find guidelines in the help button next to the `Preferred video format` setting. By default, Aerial uses 1080p H.264 videos which is the most compatible format. Please note that all HEVC videos are encoded with the `Main10` profile, which may not be hardware accelerated by your machine, while some other HEVC videos (Encoded in `Main` profile) will be. - -While we wish to provide everyone with the best setting for their machine, the GVA framework from Apple doesn't let us distinguish HEVC `Main10` profile acceleration from general HEVC acceleration. Early feedback we gathered also seems to point that on machines with multiple decoding options (Intel QuickSync and AMD UVD), QuickSync will always be preferred (Even if you "force" the discrete GPU use with an external monitor). - -These are our recommendations so far: - -- Macs older than 2011 may lack H.264 acceleration. -- Macs with an Intel CPU (With iGPU) from the Sandy Bridge (2011) generation to Broadwell (Early 2015) should have H.264 hardware acceleration available. -- Late 2015 and 2016 Macs (Skylake and Kaby Lake) may only have partially accelerated HEVC decoding. We recommended you stick to 1080p H.264 on laptops. You may consider the HEVC format on desktops but understand that decoding may be CPU intensive and spin up your fans. -- Macs 2017 and up should have full HEVC acceleration. - -You can easily check for yourself what to expect by opening a video in Quicktime (Use the `Show in Finder` option in the `Cache` tab to find the cached videos). In Activity Monitor, the AV Framework GVA process is called `VTDecoderXPCService`. +## More documentation -## Troubleshooting +Looking for more information ? -- Aerial logs you out of your user account everytime it starts: This looks like a new bug with macOS 10.14.5 beta 18F108f, possibly only for Macs with Intel graphics. As a workaround, please tick the Show Clock option in the main screensaver settings (not on Aerial settings). More information here : https://github.com/JohnCoates/Aerial/issues/738 -- Videos keeps disappearing, Aerial may not restart once in a while: Aerial stores all it's data in a Cache folder. This cache may get deleted by some third party software trying to free disk space. If you use such a "Cleaning" tool, we recommend you set a manual folder location in the Cache tab of Aerial. For example, you can create an Aerial folder in your User folder, and point to it. This will ensure Aerial files don't get deleted. -- "Done" button doesn't close Aerial: Please update to latest available version, this is a bug on Mojave with very old versions of Aerial (1.2 and below). -- Can't type into text fields with macOS High Sierra/Video corruption issue on High Sierra: Please make sure you have at least version 1.4.5. -- "This app is damaged and can't be opened, you should move it to the trash" when double-clicking the `Aerial.saver` file: Please see the installation notes above, this is a GateKeeper issue. -- Brightness control does not control external displays: Aerial uses the brightness API from macOS to change the brightness of your screens. Depending on your external screens (brand, the way they are connected, etc), macOS may not be able to control their brightness. Please check first if you can control the brightness of your external screen(s) using the brightness keys from your keyboard. If you can't, Aerial won't be able to control their brightness either. If you can control their brightness through those keyboard keys but see an issue with Aerial, please open an issue. -- Not seeing extended descriptions: Make sure you have version 1.4.2 or above. -- Black screen: If you are behind a firewall (Like Little Snitch or Hands Off!) try creating exceptions for Aerial to allow it access to Apple's servers. Be sure the applications `ScreenSaverEngine.app` and `System Preferences.app` are not being blocked access to `*.phobos.apple.com`, `*.phobos.apple.com.edgesuite.net` and `sylvan.apple.com`. If that isn't an option, please look at the Offline mode section. -- "You cannot use the Aerial screen saver with this version of macOS." error: Select Aerial, close `System Preferences` with Aerial still selected, re-open System Preferences and Aerial should now work. This is a known bug with Swift screensavers in macOS/OS X reported to Apple as [rdar://25569037](http://www.openradar.me/25569037). -- High CPU usage/fan spinning all of a sudden: If you correctly configured the preferred video format according to your Mac and still experience high CPU usage/fan spinning all of a sudden, please look for the cause with `Activity Monitor`, you may see a `com.apple.photos.ImageConversionService` responsible for this CPU load. This is the iCloud Photos process, you can find more about [what it does here](https://support.apple.com/en-gu/HT204264) and how to pause it. -- Can't use Aerial as a login screensaver: As far as we know, using 3rd party screensavers before login is no longer possible on modern versions of macOS. More about this [here](https://github.com/JohnCoates/Aerial/issues/571). -- Change cache location : This option simply changes _the location_ of the Cache folder that Aerial uses. It does _not_ move your files for you. Please note that this change will only be taken into account the next time Aerial starts (you may need to fully close System Preferences). We strongly recommend you use a path that's always accessible, as Aerial can't work without a Cache directory. In case the path is no longer available (missing USB key, etc), starting with Aerial 1.4.7, it will reset the Cache location to it's default location. +- [Having an issue ? Check our list of common issues right here, including workaround for common macOS bugs (like "You cannot use the Aerial screen saver with this version of macOS.") !](Documentation/Troubleshooting.md) +- [Learn more about configuring and running Aerial in offline mode with no network access.](Documentation/OfflineMode.md) +- [Information about HEVC, HDR and hardware decoding](Documentation/HardwareDecoding.md) +- [How to add your own videos to Aerial](Documentation/CustomVideos.md) +- [More details than you need on the auto-update mechanisms](Documentation/AutoUpdates.md) ## License diff --git a/Resources/CustomVideos.xib b/Resources/CustomVideos.xib index a0af20bb..a8af74d2 100644 --- a/Resources/CustomVideos.xib +++ b/Resources/CustomVideos.xib @@ -19,6 +19,7 @@ + @@ -115,7 +116,17 @@ -