|
@@ -9,11 +9,36 @@ import Cocoa
|
|
|
|
|
|
|
|
@main
|
|
@main
|
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
|
|
+ private var statusItem: NSStatusItem?
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+ func applicationDidFinishLaunching(_ aNotification: Notification) {
|
|
|
|
|
+ configureMainWindowIfNeeded()
|
|
|
|
|
+ setupStatusBarItem()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ private func setupStatusBarItem() {
|
|
|
|
|
+ let item = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
|
|
|
|
|
+ statusItem = item
|
|
|
|
|
|
|
|
- func applicationDidFinishLaunching(_ aNotification: Notification) {
|
|
|
|
|
|
|
+ guard let button = item.button else { return }
|
|
|
|
|
+ button.image = NSImage(systemSymbolName: "square.grid.2x2.fill", accessibilityDescription: "My Apps")
|
|
|
|
|
+ button.image?.isTemplate = true
|
|
|
|
|
+ button.action = #selector(openMainWindowFromStatusBar)
|
|
|
|
|
+ button.target = self
|
|
|
|
|
+ button.sendAction(on: [.leftMouseUp, .rightMouseUp])
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @objc
|
|
|
|
|
+ private func openMainWindowFromStatusBar() {
|
|
|
|
|
+ configureMainWindowIfNeeded()
|
|
|
|
|
+ NSApp.setActivationPolicy(.regular)
|
|
|
|
|
+ NSApp.activate(ignoringOtherApps: true)
|
|
|
|
|
+ if let window = NSApp.windows.first {
|
|
|
|
|
+ window.makeKeyAndOrderFront(nil)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private func configureMainWindowIfNeeded() {
|
|
|
guard let window = NSApp.windows.first else { return }
|
|
guard let window = NSApp.windows.first else { return }
|
|
|
window.title = "My Apps"
|
|
window.title = "My Apps"
|
|
|
window.isOpaque = false
|
|
window.isOpaque = false
|