diff --git a/quickshell/Modules/DankBar/DankBarWindow.qml b/quickshell/Modules/DankBar/DankBarWindow.qml index 48abc425..103b32b1 100644 --- a/quickshell/Modules/DankBar/DankBarWindow.qml +++ b/quickshell/Modules/DankBar/DankBarWindow.qml @@ -157,6 +157,7 @@ PanelWindow { property string screenName: modelData.name property bool hasMaximizedToplevel: false + property bool hasFullscreenToplevel: false property bool shouldHideForWindows: false function _updateHasMaximizedToplevel() { @@ -179,6 +180,22 @@ PanelWindow { hasMaximizedToplevel = false; } + function _updateHasFullscreenToplevel() { + if (!CompositorService.isHyprland && !CompositorService.isNiri) { + hasFullscreenToplevel = false; + return; + } + + const filtered = CompositorService.filterCurrentWorkspace(CompositorService.sortedToplevels, screenName); + for (let i = 0; i < filtered.length; i++) { + if (filtered[i]?.fullscreen) { + hasFullscreenToplevel = true; + return; + } + } + hasFullscreenToplevel = false; + } + function _updateShouldHideForWindows() { if (!(barConfig?.showOnWindowsOpen ?? false)) { shouldHideForWindows = false; @@ -485,6 +502,7 @@ PanelWindow { target: CompositorService function onToplevelsChanged() { barWindow._updateHasMaximizedToplevel(); + barWindow._updateHasFullscreenToplevel(); barWindow._updateShouldHideForWindows(); } } @@ -493,6 +511,7 @@ PanelWindow { target: NiriService function onAllWorkspacesChanged() { barWindow._updateHasMaximizedToplevel(); + barWindow._updateHasFullscreenToplevel(); barWindow._updateShouldHideForWindows(); } } @@ -668,6 +687,9 @@ PanelWindow { if (inOverviewWithShow) return true; + if (barWindow.hasFullscreenToplevel) + return false; + const showOnWindowsSetting = barConfig?.showOnWindowsOpen ?? false; if (showOnWindowsSetting && autoHide && (CompositorService.isNiri || CompositorService.isHyprland)) { if (barWindow.shouldHideForWindows)