1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-05-04 19:42:08 -04:00

fix(FrameMode): Update logic to hide the dbar/dock upon maximized windows/apps/games

This commit is contained in:
purian23
2026-05-03 22:03:02 -04:00
parent 082de6f1f0
commit 31e60a3df5
3 changed files with 99 additions and 28 deletions

View File

@@ -29,7 +29,7 @@ Variants {
}
WlrLayershell.namespace: "dms:dock"
WlrLayershell.layer: SettingsData.frameEnabled ? WlrLayer.Overlay : WlrLayer.Top
WlrLayershell.layer: SettingsData.frameEnabled && !dock.hasFullscreenToplevel ? WlrLayer.Overlay : WlrLayer.Top
readonly property bool isVertical: SettingsData.dockPosition === SettingsData.Position.Left || SettingsData.dockPosition === SettingsData.Position.Right
@@ -163,6 +163,18 @@ Variants {
}
readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "")
readonly property bool hasFullscreenToplevel: {
CompositorService.sortedToplevels;
ToplevelManager.activeToplevel;
if (CompositorService.isNiri) {
NiriService.currentOutput;
NiriService.windows;
NiriService.allWorkspaces;
}
if (CompositorService.isHyprland)
Hyprland.focusedWorkspace;
return CompositorService.hasFullscreenToplevelOnScreen(dock._dockScreenName);
}
function _syncDockChromeState() {
if (!dock._dockScreenName)
@@ -353,6 +365,9 @@ Variants {
if (_modalRetractActive)
return false;
if (dock.hasFullscreenToplevel)
return false;
if (CompositorService.isNiri && NiriService.inOverview && SettingsData.dockOpenOnOverview) {
return true;
}
@@ -384,6 +399,7 @@ Variants {
onVisibleChanged: dock._syncDockChromeState()
onHasAppsChanged: dock._syncDockChromeState()
onConnectedBarSideChanged: dock._syncDockChromeState()
onHasFullscreenToplevelChanged: dock._syncDockChromeState()
Connections {
target: SettingsData
@@ -409,6 +425,8 @@ Variants {
color: "transparent"
exclusiveZone: {
if (dock.hasFullscreenToplevel)
return -1;
if (!SettingsData.showDock || autoHide)
return -1;
if (barSpacing > 0)