sindresorhus/LaunchAtLogin

Add “Launch at Login” functionality to your macOS app in seconds


Keywords
macos, swift, swift-package
License
MIT

Documentation

LaunchAtLogin

Add “Launch at Login” functionality to your macOS app in seconds

It's usually quite a convoluted and error-prone process to add this. No more!

This package works with both sandboxed and non-sandboxed apps and it's App Store compatible and used in apps like Dato, Lungo, and Battery Indicator.

Requirements

  • macOS 10.12+
  • Xcode 10.2+
  • Swift 5+

Install

Carthage

github "sindresorhus/LaunchAtLogin"

Usage

Add a new "Run Script Phase" below "Embed Frameworks" in "Build Phases" with the following:

"${PROJECT_DIR}/Carthage/Build/Mac/LaunchAtLogin.framework/Resources/copy-helper.sh"

Use it in your app:

import LaunchAtLogin

print(LaunchAtLogin.isEnabled)
//=> false

LaunchAtLogin.isEnabled = true

print(LaunchAtLogin.isEnabled)
//=> true

No need to store any state to UserDefaults.

Note that the Mac App Store guidelines requires “launch at login” functionality to be enabled in response to a user action. This is usually solved by making it a preference that is disabled by default. Many apps also let the user activate it in a welcome screen.

How does it work?

The framework bundles the helper app needed to launch your app and copies it into your app at build time.

FAQ

Can you support CocoaPods?

CocoaPods used to be supported, but it did not work well and there was no easy way to fix it, so support was dropped. Even though you mainly use CocoaPods, you can still use Carthage just for this package without any problems.

I'm getting a 'SMCopyAllJobDictionaries' was deprecated in OS X 10.10 warning

Apple deprecated that API without providing an alternative. Apple engineers have stated that it's still the preferred API to use. I plan to use it as long as it's available. There are workarounds I can implement if Apple ever removes the API, so rest assured, this module will be made to work even then. If you want to see this resolved, submit a Feedback Assistant report with the following text. There's unfortunately still no way to supress warnings in Swift.

Related

  • Defaults - Swifty and modern UserDefaults
  • Preferences - Add a preferences window to your macOS app in minutes
  • DockProgress - Show progress in your app's Dock icon
  • create-dmg - Create a good-looking DMG for your macOS app in seconds
  • More…