import CoreGraphics import Foundation // Lists on-screen windows, optionally filtered by owning PID. // Usage: swift list-windows.swift [pid] let filterPid: Int? = CommandLine.arguments.count > 1 ? Int(CommandLine.arguments[1]) : nil guard let windows = CGWindowListCopyWindowInfo( [.optionOnScreenOnly, .excludeDesktopElements], kCGNullWindowID) as? [[String: Any]] else { FileHandle.standardError.write(Data("window list unavailable\n".utf8)) exit(1) } for window in windows { guard let pid = window[kCGWindowOwnerPID as String] as? Int else { continue } if let filterPid, pid != filterPid { continue } let id = window[kCGWindowNumber as String] as? Int ?? -1 let owner = window[kCGWindowOwnerName as String] as? String ?? "?" let name = window[kCGWindowName as String] as? String ?? "" let layer = window[kCGWindowLayer as String] as? Int ?? -1 let bounds = window[kCGWindowBounds as String] as? [String: Any] ?? [:] print("windowId=\(id) pid=\(pid) layer=\(layer) owner=\(owner) name=\(name) bounds=\(bounds)") }