diff --git a/quickshell/Modules/DankBar/DankBarWindow.qml b/quickshell/Modules/DankBar/DankBarWindow.qml index 02a23513..45c414b3 100644 --- a/quickshell/Modules/DankBar/DankBarWindow.qml +++ b/quickshell/Modules/DankBar/DankBarWindow.qml @@ -150,6 +150,9 @@ PanelWindow { function onUsesFrameBarChromeChanged() { _blurRebuildTimer.restart(); } + function onBarRevealedChanged() { + _blurRebuildTimer.restart(); + } } Component { @@ -176,6 +179,13 @@ PanelWindow { teardown(); if (!BlurService.enabled || !BlurService.available) return; + // When the bar is hidden (auto-hide, or config not visible) keep the blur + // region empty rather than sliding it off-surface. Some compositors (Hyprland) + // gate blur on a non-empty region and then blur the whole surface box when the + // clip degenerates to empty, leaving the bar strip blurred while the bar is + // hidden (issue #2656). A null region disables the effect cleanly. + if (!barWindow.barRevealed) + return; // In frame mode, FrameWindow owns the blur region for the entire screen edge // (including the bar area). The bar must not set its own competing blur region // so that frameBlurEnabled acts as the single control for all blur in frame mode.