import Cocoa class AXWindow { let app: AXUIElement let window: AXUIElement init(app: AXUIElement, window: AXUIElement) { self.app = app self.window = window } class func initWithCGWindow(cgWindow: CGWindow) -> AXWindow? { let app = AXUIElementCreateApplication(pid_t(cgWindow.ownerPID)).takeRetainedValue(); let windows: [AXUIElement] = app.getAttribute("Windows") for window in windows { let title: String = window.getAttribute("Title") if title != cgWindow.name { continue } let point: NSPoint = window.getAttribute("Position") if point != cgWindow.bounds.origin { continue } let size: NSSize = window.getAttribute("Size") if size != cgWindow.bounds.size { continue } return AXWindow(app: app, window: window) } return nil } func setPosition(view: NSView) { let screenRect = view.screenRect() self.window.setBounds(screenRect) toFrontQueue.push(self) } func bringToFront() { Swift.print("bringToFront") self.app.setAttribute("Frontmost", value: true) self.window.setAttribute("Main", value: true) } }