Force app activation on capture; log to /tmp for durable diagnostics

Cooperative NSApp.activate() can silently fail for LSUIElement apps,
leaving the app inactive so overlay clicks pass through to windows below.
Force activation with ignoringOtherApps on all OS versions. Session logs
now also append to /tmp/kapture-debug.log so they survive relaunches, and
the first window-scan result is always logged.

💘 Generated with Crush

Assisted-by: Crush:deepseek-v4-flash-0731
This commit is contained in:
2026-09-09 11:00:44 +08:00
parent 345f306edf
commit 457e303152
2 changed files with 8 additions and 7 deletions
+5 -4
View File
@@ -61,11 +61,11 @@ final class CaptureController: NSObject {
}
isSelecting = true
previousApp = NSWorkspace.shared.frontmostApplication
if #available(macOS 14.0, *) {
NSApp.activate()
} else {
// Force activation: cooperative NSApp.activate() can silently fail for
// LSUIElement apps, leaving the app inactive — then clicks on the
// overlays pass through to the windows below.
NSApp.activate(ignoringOtherApps: true)
}
CaptureController.log("begin: creating overlays for \(NSScreen.screens.count) screens")
overlays = NSScreen.screens.map { screen in
OverlayWindow(
screen: screen,
@@ -76,6 +76,7 @@ final class CaptureController: NSObject {
}
overlays.forEach { $0.makeKeyAndOrderFront(nil) }
overlayIDs = overlays.map { $0.windowNumber }
CaptureController.log("begin: \(overlays.count) overlays, ids=\(overlayIDs), active=\(NSApp.isActive)")
}
/// A window was picked from hover — capture it with rounded corners.
+2 -2
View File
@@ -108,9 +108,9 @@ cat > "$APP/Contents/Info.plist" <<'PLIST'
<key>CFBundleIconFile</key>
<string>Icon</string>
<key>CFBundleShortVersionString</key>
<string>1.6.1</string>
<string>1.6.2</string>
<key>CFBundleVersion</key>
<string>61</string>
<string>62</string>
<key>LSUIElement</key>
<true/>
<key>NSHighResolutionCapable</key>