aerospace fork
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import CoreGraphicsimport Foundation
@MainActorprivate var cache: [UInt32: MacOsWindowLevel] = [:]
@MainActorfunc getWindowLevel(for windowId: UInt32) -> MacOsWindowLevel? { if let existing = cache[windowId] { return existing }
var result: [UInt32: MacOsWindowLevel] = [:] let options = CGWindowListOption(arrayLiteral: .excludeDesktopElements, .optionOnScreenOnly) guard let cfArray = CGWindowListCopyWindowInfo(options, CGWindowID(0)) as? [CFDictionary] else { return nil } for elem in cfArray { let dict = elem as NSDictionary
guard let _windowLayer = dict[kCGWindowLayer] else { continue } let windowLayer = ((_windowLayer as! CFNumber) as NSNumber).intValue
guard let _windowId = dict[kCGWindowNumber] else { continue } let windowId = ((_windowId as! CFNumber) as NSNumber).uint32Value
result[windowId] = .new(windowLevel: windowLayer) } cache = result return result[windowId]}
enum MacOsWindowLevel: Sendable, Equatable { case normalWindow case alwaysOnTopWindow case unknown(windowLevel: Int)
static func new(windowLevel: Int) -> MacOsWindowLevel { switch windowLevel { case 0: .normalWindow case 3: .alwaysOnTopWindow default: .unknown(windowLevel: windowLevel) } }
static func fromJson(_ json: Json) -> MacOsWindowLevel? { switch json { case .string("normalWindow"): .normalWindow case .string("alwaysOnTopWindow"): .alwaysOnTopWindow case .int(let int): .new(windowLevel: Int(exactly: int).orDie()) default: nil } }
func toJson() -> Json { switch self { case .normalWindow: .string("normalWindow") case .alwaysOnTopWindow: .string("alwaysOnTopWindow") case .unknown(let layerNumber): .int(layerNumber) } }}