From ed07a0ca532d6d68064b8fa6a92996d2ada731ed Mon Sep 17 00:00:00 2001 From: Seki Hiroyasu Date: Sat, 27 Jun 2026 12:03:00 +0900 Subject: [PATCH] fix: exclude software-dimming overlay windows from screen capture For displays without DDC or gamma support (e.g. DisplayLink / virtual displays), MonitorControl dims via a full-screen black 'shade' NSWindow. Because the shade window's sharingType defaults to .readOnly, it is captured by screenshots and screen recordings, so any capture taken while a display is dimmed comes out darkened (see discussions #1453, #866, #1446). Set sharingType = .none on the shade windows and the gamma activity enforcer so they no longer appear in screen captures. This is display-only chrome; excluding it from capture does not change what the user sees on screen. --- MonitorControl/Support/DisplayManager.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MonitorControl/Support/DisplayManager.swift b/MonitorControl/Support/DisplayManager.swift index 00a4627..65167f0 100644 --- a/MonitorControl/Support/DisplayManager.swift +++ b/MonitorControl/Support/DisplayManager.swift @@ -21,6 +21,7 @@ class DisplayManager { self.gammaActivityEnforcer.alphaValue = 1 * (DEBUG_GAMMA_ENFORCER ? 0.5 : 0.01) self.gammaActivityEnforcer.ignoresMouseEvents = true self.gammaActivityEnforcer.level = .screenSaver + self.gammaActivityEnforcer.sharingType = .none // exclude helper overlay from screen capture/recording self.gammaActivityEnforcer.orderFrontRegardless() self.gammaActivityEnforcer.collectionBehavior = [.stationary, .canJoinAllSpaces] os_log("Gamma activity enforcer created.", type: .info) @@ -70,6 +71,7 @@ class DisplayManager { shade.backgroundColor = .clear shade.ignoresMouseEvents = true shade.level = NSWindow.Level(rawValue: Int(CGShieldingWindowLevel())) + shade.sharingType = .none // dimming overlay must not appear in screenshots / screen recordings shade.orderFrontRegardless() shade.collectionBehavior = [.stationary, .canJoinAllSpaces, .ignoresCycle] shade.setFrame(screen.frame, display: true)