diff --git a/config/dot/hypr/rules.lua b/config/dot/hypr/rules.lua index eeb8612..9fcd80d 100644 --- a/config/dot/hypr/rules.lua +++ b/config/dot/hypr/rules.lua @@ -269,16 +269,28 @@ hl.layer_rule({ ignore_alpha = 0.2, }) --- Overview, capture and local screen-reading UI dim the desktop behind them. +-- Overview and local screen-reading UI dim the desktop behind them. hl.layer_rule({ name = "qs-overlay", - match = { namespace = "^qs-(overview|capture|screen-intelligence)$" }, + match = { namespace = "^qs-(overview|screen-intelligence)$" }, blur = true, ignore_alpha = 0.4, dim_around = true, no_screen_share = true, }) +-- The screenshot picker paints an opaque frozen frame edge to edge, so blur and +-- dim would be compositor work on pixels nobody sees. no_anim is load-bearing: +-- services/Capture.qml unmaps the picker and runs grim 90ms later, and the +-- 200ms layersOut fade would otherwise put the half-faded picker, dimming and +-- all, into every screenshot. +hl.layer_rule({ + name = "qs-capture", + match = { namespace = "^qs-capture$" }, + no_anim = true, + no_screen_share = true, +}) + -- Notification toasts. Blurred like every other shell surface -- without this -- the cards are a near-transparent fill sitting directly on the wallpaper and -- read as washed out rather than as glass. diff --git a/config/dot/quickshell/services/Capture.qml b/config/dot/quickshell/services/Capture.qml index 6070dbc..9f71e40 100644 --- a/config/dot/quickshell/services/Capture.qml +++ b/config/dot/quickshell/services/Capture.qml @@ -341,7 +341,10 @@ esac' property bool record: false property bool intelligence: false // A handful of frames at 60Hz, enough for the compositor to recomposite - // the output without the overlay on it. + // the output without the overlay on it. Only enough because the + // qs-capture layer rule in hypr/rules.lua sets no_anim: with the + // default 200ms layersOut fade the half-faded picker would still be + // on screen when grim reads it. interval: 90 onTriggered: { const r = commitDelay.rect;