@@ -98,6 +98,8 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
9898 menu. addItem ( helperRow)
9999 }
100100
101+ menu. addItem ( . separator( ) )
102+ menu. addItem ( NSMenuItem ( title: " Uninstall Awayke… " , action: #selector( menuUninstall) , keyEquivalent: " " ) )
101103 menu. addItem ( . separator( ) )
102104 menu. addItem ( NSMenuItem ( title: " Quit Awayke " , action: #selector( menuQuit) , keyEquivalent: " q " ) )
103105
@@ -123,17 +125,26 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
123125 let item = NSMenuItem ( title: " Helper not found (using fallback) " , action: nil , keyEquivalent: " " )
124126 item. isEnabled = false
125127 return item
126- case . registrationFailed( let detail) :
127- let item = NSMenuItem ( title: " Helper failed: \( detail) " , action: nil , keyEquivalent: " " )
128- item. isEnabled = false
129- return item
130128 }
131129 }
132130
133131 @objc private func menuToggle( ) { toggle ( ) }
134132 @objc private func menuApproveHelper( ) { helper. revealInSystemSettings ( ) }
135133 @objc private func menuQuit( ) { NSApp . terminate ( nil ) }
136134
135+ @objc private func menuUninstall( ) {
136+ let alert = NSAlert ( )
137+ alert. messageText = " Uninstall Awayke? "
138+ alert. informativeText = " This will remove Awayke's background helper from System Settings and quit the app. You can then move Awayke.app to the Trash. "
139+ alert. alertStyle = . warning
140+ alert. addButton ( withTitle: " Uninstall " )
141+ alert. addButton ( withTitle: " Cancel " )
142+ guard alert. runModal ( ) == . alertFirstButtonReturn else { return }
143+
144+ helper. unregister ( )
145+ NSApp . terminate ( nil )
146+ }
147+
137148 private func refreshStatusItem( ) {
138149 guard let button = statusItem? . button else { return }
139150 guard let base = NSImage ( named: " StatusIcon " ) else { return }
0 commit comments