diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/Contents.json b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-1024.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-1024.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-1024.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-120.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-120.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-120.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-120.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-152.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-152.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-152.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-152.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-167.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-167.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-167.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-167.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-180.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-180.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-180.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-180.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-29.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-29.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-29.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-29.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-40.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-40.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-40.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-40.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-58.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-58.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-58.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-58.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-60.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-60.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-60.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-60.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-76.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-76.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-76.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-76.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-80.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-80.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-80.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-80.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-87.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-87.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon-87.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon-87.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon20.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon20.png similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/AppIcon.appiconset/icon20.png rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/AppIcon.appiconset/icon20.png diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/Contents.json b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/Contents.json similarity index 100% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Assets.xcassets/Contents.json rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Assets.xcassets/Contents.json diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Application/AppDelegate.swift b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___AppDelegate.swift similarity index 79% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Source/Application/AppDelegate.swift rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___AppDelegate.swift index 64c840b..2506765 100644 --- a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Application/AppDelegate.swift +++ b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___AppDelegate.swift @@ -9,7 +9,7 @@ import UIKit @UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { +class ___VARIABLE_classPrefix___AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { return true } diff --git a/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___SceneDelegate+NSToolbar.swift b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___SceneDelegate+NSToolbar.swift new file mode 100644 index 0000000..e6824ad --- /dev/null +++ b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___SceneDelegate+NSToolbar.swift @@ -0,0 +1,32 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// ___COPYRIGHT___ +// + +import UIKit + +#if targetEnvironment(macCatalyst) +import AppKit + +extension ___VARIABLE_classPrefix___SceneDelegate: NSToolbarDelegate { + + func toolbarItems() -> [NSToolbarItem.Identifier] { + return [.toggleSidebar] + } + + func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { + return toolbarItems() + } + + func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { + return toolbarItems() + } + + func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? { + return NSToolbarItem(itemIdentifier: itemIdentifier) + } +} +#endif diff --git a/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___SceneDelegate.swift b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___SceneDelegate.swift new file mode 100644 index 0000000..0732c9b --- /dev/null +++ b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Application/___VARIABLE_classPrefix___SceneDelegate.swift @@ -0,0 +1,38 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// ___COPYRIGHT___ +// + +import UIKit + +class ___VARIABLE_classPrefix___SceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + guard let windowScene = scene as? UIWindowScene else { + fatalError("Expected scene of type UIWindowScene but got an unexpected type") + } + window = UIWindow(windowScene: windowScene) + + if let window = window { + window.rootViewController = ___VARIABLE_classPrefix___MainViewController() + +#if targetEnvironment(macCatalyst) + + let toolbar = NSToolbar(identifier: NSToolbar.Identifier("___VARIABLE_classPrefix___SceneDelegate.Toolbar")) + toolbar.delegate = self + toolbar.displayMode = .iconOnly + toolbar.allowsUserCustomization = false + + windowScene.titlebar?.toolbar = toolbar + windowScene.titlebar?.toolbarStyle = .unified + +#endif + + window.makeKeyAndVisible() + } + } +} diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Main/MainViewController.swift b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Main/___VARIABLE_classPrefix___MainViewController.swift similarity index 60% rename from Project Templates/Custom/iOS Minimalist.xctemplate/Source/Main/MainViewController.swift rename to Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Main/___VARIABLE_classPrefix___MainViewController.swift index ecf4d7f..cfd86ba 100644 --- a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Main/MainViewController.swift +++ b/Project Templates/Custom/Catalyst App (Basic).xctemplate/Source/Main/___VARIABLE_classPrefix___MainViewController.swift @@ -8,8 +8,7 @@ import UIKit -final class MainViewController: UIViewController { - private let contentView = MainView() +final class ___VARIABLE_classPrefix___MainViewController: UIViewController { init() { super.init(nibName: nil, bundle: nil) @@ -19,12 +18,4 @@ final class MainViewController: UIViewController { required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } - - override func loadView() { - view = contentView - } - - override func viewDidLoad() { - super.viewDidLoad() - } } diff --git a/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateIcon@1x.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateIcon@1x.png new file mode 100644 index 0000000..79d7ba4 Binary files /dev/null and b/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateIcon@1x.png differ diff --git a/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateIcon@2x.png b/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..3762377 Binary files /dev/null and b/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateIcon@2x.png differ diff --git a/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateInfo.plist b/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..a453459 --- /dev/null +++ b/Project Templates/Custom/Catalyst App (Basic).xctemplate/TemplateInfo.plist @@ -0,0 +1,108 @@ + + + + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + Identifier + com.highcaffeinecontent.catalyst.simple + Ancestors + + com.highcaffeinecontent.catalyst.base + + Concrete + + Description + Starting point for an app. + SortOrder + 1 + CFBundleIdentifier + + Nodes + + Source/Application/___VARIABLE_classPrefix___AppDelegate.swift + Source/Application/___VARIABLE_classPrefix___SceneDelegate.swift + Source/Application/___VARIABLE_classPrefix___SceneDelegate+NSToolbar.swift + Source/Main/___VARIABLE_classPrefix___MainViewController.swift + Assets.xcassets + + Targets + + + SharedSettings + + SUPPORTS_MACCATALYST + YES + TARGETED_DEVICE_FAMILY + 1,2,6 + IPHONEOS_DEPLOYMENT_TARGET + 14.0 + IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*] + 14.2 + SWIFT_TREAT_WARNINGS_AS_ERRORS + YES + RUN_CLANG_STATIC_ANALYZER + YES + CLANG_STATIC_ANALYZER_MODE + deep + GCC_TREAT_WARNINGS_AS_ERRORS + deep + GCC_WARN_PEDANTIC + deep + INFOPLIST_FILE + $(PRODUCT_NAME)/Info.plist + + + + Definitions + + Assets.xcassets + + Path + Assets.xcassets + + Source/Application/___VARIABLE_classPrefix___AppDelegate.swift + + Group + + Source + Application + + Path + Source/Application/___VARIABLE_classPrefix___AppDelegate.swift + + Source/Application/___VARIABLE_classPrefix___SceneDelegate.swift + + Group + + Source + Application + + Path + Source/Application/___VARIABLE_classPrefix___SceneDelegate.swift + + Source/Application/___VARIABLE_classPrefix___SceneDelegate+NSToolbar.swift + + Group + + Source + Application + + Path + Source/Application/___VARIABLE_classPrefix___SceneDelegate+NSToolbar.swift + + Source/Main/___VARIABLE_classPrefix___MainViewController.swift + + Group + + Source + Main + + Path + Source/Main/___VARIABLE_classPrefix___MainViewController.swift + + + Options + + + diff --git a/Project Templates/Custom/iOS Base.xctemplate/LaunchScreen.storyboard b/Project Templates/Custom/Catalyst Base.xctemplate/LaunchScreen.storyboard similarity index 100% rename from Project Templates/Custom/iOS Base.xctemplate/LaunchScreen.storyboard rename to Project Templates/Custom/Catalyst Base.xctemplate/LaunchScreen.storyboard diff --git a/Project Templates/Custom/iOS Base.xctemplate/TemplateInfo.plist b/Project Templates/Custom/Catalyst Base.xctemplate/TemplateInfo.plist similarity index 90% rename from Project Templates/Custom/iOS Base.xctemplate/TemplateInfo.plist rename to Project Templates/Custom/Catalyst Base.xctemplate/TemplateInfo.plist index 33e31cb..c026be2 100644 --- a/Project Templates/Custom/iOS Base.xctemplate/TemplateInfo.plist +++ b/Project Templates/Custom/Catalyst Base.xctemplate/TemplateInfo.plist @@ -5,7 +5,7 @@ Kind Xcode.Xcode3.ProjectTemplateUnitKind Identifier - dk.simonbs.dt.unit.iosBase + com.highcaffeinecontent.catalyst.base Ancestors com.apple.dt.unit.applicationBase @@ -113,7 +113,7 @@ <key>UISceneConfigurationName</key> <string>Default Configuration</string> <key>UISceneDelegateClassName</key> -<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> +<string>$(PRODUCT_MODULE_NAME).___VARIABLE_classPrefix___SceneDelegate</string> </dict> </array> </dict> @@ -142,6 +142,19 @@ Options - + + + Identifier + classPrefix + Name + Class Prefix + Description + The prefix to prepend to all created classes + Type + text + Placeholder + XYZ + + diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Application/SceneDelegate.swift b/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Application/SceneDelegate.swift deleted file mode 100644 index 7e86850..0000000 --- a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Application/SceneDelegate.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// ___COPYRIGHT___ -// - -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - var window: UIWindow? - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - guard let windowScene = scene as? UIWindowScene else { - fatalError("Expected scene of type UIWindowScene but got an unexpected type") - } - window = UIWindow(windowScene: windowScene) - window?.rootViewController = UINavigationController(rootViewController: MainViewController()) - window?.makeKeyAndVisible() - } -} diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Main/MainView.swift b/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Main/MainView.swift deleted file mode 100644 index 7acc8f4..0000000 --- a/Project Templates/Custom/iOS Minimalist.xctemplate/Source/Main/MainView.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// ___FILENAME___ -// ___PROJECTNAME___ -// -// Created by ___FULLUSERNAME___ on ___DATE___. -// ___COPYRIGHT___ -// - -import UIKit - -final class MainView: UIView { - init() { - super.init(frame: .zero) - setupView() - setupLayout() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func setupView() { - backgroundColor = .systemBackground - } - - private func setupLayout() { - - } -} diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateIcon@1x.png b/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateIcon@1x.png deleted file mode 100644 index 2b729cb..0000000 Binary files a/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateIcon@1x.png and /dev/null differ diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateIcon@2x.png b/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateIcon@2x.png deleted file mode 100644 index b389027..0000000 Binary files a/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateIcon@2x.png and /dev/null differ diff --git a/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateInfo.plist b/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateInfo.plist deleted file mode 100644 index f1c1291..0000000 --- a/Project Templates/Custom/iOS Minimalist.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,80 +0,0 @@ - - - - - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Identifier - dk.simonbs.dt.unit.iosMinimalist - Ancestors - - dk.simonbs.dt.unit.iosBase - - Concrete - - Description - Starting point for an app. - SortOrder - 1 - CFBundleIdentifier - - Nodes - - Source/Application/AppDelegate.swift - Source/Application/SceneDelegate.swift - Source/Main/MainView.swift - Source/Main/MainViewController.swift - Assets.xcassets - - Definitions - - Assets.xcassets - - Path - Assets.xcassets - - Source/Application/AppDelegate.swift - - Group - - Source - Application - - Path - Source/Application/AppDelegate.swift - - Source/Application/SceneDelegate.swift - - Group - - Source - Application - - Path - Source/Application/SceneDelegate.swift - - Source/Main/MainView.swift - - Group - - Source - Main - - Path - Source/Main/MainView.swift - - Source/Main/MainViewController.swift - - Group - - Source - Main - - Path - Source/Main/MainViewController.swift - - - Options - - - diff --git a/README.md b/README.md index 6370aaa..3b4fcde 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ -# xctemplates +# catalyst-xctemplates -Opinionated templates for Xcode 11. - - +Basic Mac Catalyst templates for Xcode 11+. ## Installation @@ -12,12 +10,10 @@ The project templates should be copied into the `~/Library/Developer/Xcode/Temp Below is a brief description of the templates in this repository. -### iOS Base +### Catalyst Base -This is not an actual project template. It contains the base configuration for an iOS project an is inherited by other project templates. +This is not an actual project template. It contains the base configuration for a Catalyst project and is inherited by other project templates. -### iOS Minimalist +### Catalyst App (Basic) -This is a minimalistic template for an iOS project. It configures the app to use scenes without storyboards. - - +This is a minimalistic template for a Mac Catalyst project using the Mac Idiom and targeting macOS 11. It configures the app to use scenes without storyboards, enables warnings-as-errors for both Swift & Objective-C, and prompts you for a class prefix. diff --git a/imgs/header.png b/imgs/header.png deleted file mode 100644 index 00f0e1c..0000000 Binary files a/imgs/header.png and /dev/null differ diff --git a/imgs/ios_minimalist.png b/imgs/ios_minimalist.png deleted file mode 100644 index 4c1e97d..0000000 Binary files a/imgs/ios_minimalist.png and /dev/null differ