import AppKit final class AppDelegate: NSObject, NSApplicationDelegate { private var overlayWindowController: OverlayWindowController! private var hotKeyManager: HotKeyManager! private var serviceChecker: ServiceChecker! func applicationDidFinishLaunching(_ notification: Notification) { NSApp.setActivationPolicy(.accessory) // visible menu-less app serviceChecker = ServiceChecker() overlayWindowController = OverlayWindowController(serviceChecker: serviceChecker) overlayWindowController.showIfMenuBarVisible() hotKeyManager = HotKeyManager() hotKeyManager.registerGlobalHotKey(modifiers: [.command, .option, .shift], key: .p) { [weak self] in self?.overlayWindowController.showContextMenu() } // Observe screen/space/menu bar visibility changes DistributedNotificationCenter.default().addObserver(self, selector: #selector(handleConfigChange), name: NSNotification.Name("com.apple.HIToolbox.inputSourceChanged"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(handleConfigChange), name: NSApplication.didChangeScreenParametersNotification, object: nil) NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(spaceChanged), name: NSWorkspace.activeSpaceDidChangeNotification, object: nil) serviceChecker.start() } @objc private func handleConfigChange() { overlayWindowController.recomputeFrameAndVisibility() } @objc private func spaceChanged() { overlayWindowController.recomputeFrameAndVisibility() } }