From 9a1c6224923dd2beff952ee72540bd4465d0b389 Mon Sep 17 00:00:00 2001 From: bbedward Date: Thu, 24 Sep 2026 22:00:28 -0400 Subject: [PATCH] blur: clip regions to the window so hyprland stops blurring whole surfaces fixes #3480 --- quickshell/Widgets/DankSlideout.qml | 7 ++++++- quickshell/Widgets/WindowBlur.qml | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/quickshell/Widgets/DankSlideout.qml b/quickshell/Widgets/DankSlideout.qml index d9daaf6b6..da149dcdf 100644 --- a/quickshell/Widgets/DankSlideout.qml +++ b/quickshell/Widgets/DankSlideout.qml @@ -120,7 +120,12 @@ PanelWindow { readonly property real alignedEdgeGap: Theme.px(edgeGap, dpr) readonly property real slideoutSlideSnapX: Theme.snap(slideContainer.slideOffset, dpr) - onIsVisibleChanged: slideSpring.retarget(isVisible ? 0 : (slideFromLeft ? -slideContainer.width : slideContainer.width)) + onIsVisibleChanged: { + slideSpring.retarget(isVisible ? 0 : (slideFromLeft ? -slideContainer.width : slideContainer.width)); + if (isVisible || slideSpring.running) + return; + mappedVisible = false; + } mask: Region { item: Rectangle { diff --git a/quickshell/Widgets/WindowBlur.qml b/quickshell/Widgets/WindowBlur.qml index 196f86dcc..9e2021664 100644 --- a/quickshell/Widgets/WindowBlur.qml +++ b/quickshell/Widgets/WindowBlur.qml @@ -50,6 +50,13 @@ Item { width: root.clipEnabled ? root.clipWidth : root.blurWidth height: root.clipEnabled ? root.clipHeight : root.blurHeight } + + // Hyprland blurs the whole surface when the region lies entirely outside it + Region { + intersection: Intersection.Intersect + width: root.targetWindow?.width ?? 0 + height: root.targetWindow?.height ?? 0 + } } function _apply() {