tmandry / Swindler

macOS window management library for Swift
https://tmandry.github.io/Swindler/docs/main/
MIT License
690 stars 66 forks source link

"Safari Web Content (Cached)" processes causing 20 second+ initialization times #87

Open shuw opened 2 years ago

shuw commented 2 years ago

My Configuration:

I have encountered very slow Swindler initialization times at times, and have traced it to "Safari Web Content (Cached)" processes. These NSRunningApplication have the activation policy NSApplicationActivationPolicyAccessory.

Any accessibility API query to retrieve an attribute from such a process throws an AXError.cannotComplete after 6 seconds. If there are many of such processes, and many attribute queries, Swindler can take minutes to initialize.

I have not been able to root cause this issue, as what's going on in AXUIElementCopyAttributeValue is a black box to me. This could be a bug in Apple's accessibility API, or who knows what.

One workaround is allowing the consumer to specify a filter for which applications to observer. Or a robust way of filtering out "Safari Web Content" processes, which AFAIK do not have any UI.

GanZhiXiong commented 1 year ago

I had this problem too, but it wasn't Safari because I didn't have Safari open. I don't know which program caused it. The slow initialization really affects the experience.