-
Notifications
You must be signed in to change notification settings - Fork 73
Description
I've been poking at the screenshot capture with the goal of trying to be able to filter to only the foreground application, and I noticed that what's being captured even on main
seems to not match my expectations of what should be being captured based on the assumed intent of the code.
In particular,
Line 265 in d34aa69
let window = shareableContent.windows.first { $0.isActive } |
looks like it's attempting to find the active window, where "active" is probably supposed to be "the one on top"(?). But there are actually a lot of windows that have isActive = true when I'm running.
Adding the following debugging code to that method:
shareableContent.windows.forEach() {
if $0.isActive {
print("Active window: \($0.title)")
}
}
results in basically every open application on my machine, plus some Desktop-y and menubar-y looking things:
active window: Optional("Offscreen Wallpaper Window")
active window: Optional("Wallpaper-")
active window: Optional("Item-0")
active window: Optional("Recents")
active window: Optional("rem — remApp.swift")
active window: Optional("Item-0")
active window: Optional("Screenshot 2023-12-28 at 7.16.08 PM")
... snip ...
I spent some time looking at the various ScreenCaptureKit APIs, including SCContentFilter, and SCScreenshotManager, but haven't figured out how one would go about getting the actual highlighted/selected window. Just wanted to flag this in case someone driving by knew the answer. :)