Fix: Keep the screenshot picker out of its own capture
The picker paints an opaque frozen frame edge to edge, so the blur and dim it inherited from the shared qs-overlay rule were compositor work on pixels nobody sees. It now has its own layer rule. no_anim is the load-bearing part. Capture.qml unmaps the picker and runs grim 90ms later, and the default 200ms layersOut fade put the half-faded picker, dimming and all, into every screenshot.
This commit is contained in:
@@ -269,16 +269,28 @@ hl.layer_rule({
|
|||||||
ignore_alpha = 0.2,
|
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({
|
hl.layer_rule({
|
||||||
name = "qs-overlay",
|
name = "qs-overlay",
|
||||||
match = { namespace = "^qs-(overview|capture|screen-intelligence)$" },
|
match = { namespace = "^qs-(overview|screen-intelligence)$" },
|
||||||
blur = true,
|
blur = true,
|
||||||
ignore_alpha = 0.4,
|
ignore_alpha = 0.4,
|
||||||
dim_around = true,
|
dim_around = true,
|
||||||
no_screen_share = 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
|
-- Notification toasts. Blurred like every other shell surface -- without this
|
||||||
-- the cards are a near-transparent fill sitting directly on the wallpaper and
|
-- the cards are a near-transparent fill sitting directly on the wallpaper and
|
||||||
-- read as washed out rather than as glass.
|
-- read as washed out rather than as glass.
|
||||||
|
|||||||
@@ -341,7 +341,10 @@ esac'
|
|||||||
property bool record: false
|
property bool record: false
|
||||||
property bool intelligence: false
|
property bool intelligence: false
|
||||||
// A handful of frames at 60Hz, enough for the compositor to recomposite
|
// 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
|
interval: 90
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
const r = commitDelay.rect;
|
const r = commitDelay.rect;
|
||||||
|
|||||||
Reference in New Issue
Block a user