@@ -275,10 +275,18 @@ private func log(_ message: String) {
275275 monitor!. start ( queue: DispatchQueue . global ( ) )
276276
277277 #if !DEBUG
278- if #available( macOS 13 , * ) , SMAppService . mainApp. status == . notRegistered || SMAppService . mainApp. status == . notFound {
278+ setupLaunchAtLogin ( )
279+ #endif
280+ }
281+
282+ func setupLaunchAtLogin( ) {
283+ if #available( macOS 13 , * ) {
284+ if CONFIG . launchAtLogin ?? true , SMAppService . mainApp. status == . notRegistered || SMAppService . mainApp. status == . notFound {
279285 try ? SMAppService . mainApp. register ( )
286+ } else if !( CONFIG . launchAtLogin ?? true ) , SMAppService . mainApp. status == . enabled {
287+ try ? SMAppService . mainApp. unregister ( )
280288 }
281- #endif
289+ }
282290}
283291
284292func startPingMonitor( ) {
@@ -385,13 +393,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
385393
386394@main
387395struct IsThereNetApp : App {
388- @NSApplicationDelegateAdaptor ( AppDelegate . self) var appDelegate
389-
390396 init ( ) {
391397 updaterController = SPUStandardUpdaterController ( startingUpdater: true , updaterDelegate: nil , userDriverDelegate: nil )
392398 start ( )
393399 }
394400
401+ @NSApplicationDelegateAdaptor ( AppDelegate . self) var appDelegate
402+
395403 var body : some Scene { Settings { EmptyView ( ) } }
396404
397405 private let updaterController : SPUStandardUpdaterController
@@ -506,6 +514,7 @@ private struct Config: Codable, Equatable {
506514 var sounds : SoundsConfig ? = SoundsConfig ( )
507515 var colors : ColorsConfig ? = ColorsConfig ( )
508516 var screen : String ? = " all "
517+ var launchAtLogin : Bool ? = true
509518}
510519
511520private var CONFIG_FS_WATCHER : FSEventStreamRef ?
@@ -553,6 +562,7 @@ private var CONFIG: Config = {
553562 process? . terminate ( )
554563 process = nil
555564 pingRestartTask = mainAsyncAfter ( 1 ) { startPingMonitor ( ) }
565+ setupLaunchAtLogin ( )
556566 }
557567 } ,
558568 nil , [ CONFIG_PATH . path] as [ NSString ] as NSArray as CFArray ,
0 commit comments