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

feat(bar/dock): add 'Hide When Fullscreen' opt-out toggles (#2349)

Adds per-bar 'fullscreenDetection' and global 'dockHideOnFullscreen'
settings to gate CompositorService.hasFullscreenToplevelOnScreen()
This commit is contained in:
Connor Welsh
2026-05-04 19:05:40 -04:00
committed by GitHub
parent 1e67927f8a
commit e60caf8028
6 changed files with 39 additions and 0 deletions
+1
View File
@@ -589,6 +589,7 @@ Singleton {
property bool showDock: false property bool showDock: false
property bool dockAutoHide: false property bool dockAutoHide: false
property bool dockSmartAutoHide: false property bool dockSmartAutoHide: false
property bool dockHideOnFullscreen: true
property bool dockGroupByApp: false property bool dockGroupByApp: false
property bool dockRestoreSpecialWorkspaceOnClick: false property bool dockRestoreSpecialWorkspaceOnClick: false
property bool dockOpenOnOverview: false property bool dockOpenOnOverview: false
@@ -329,6 +329,7 @@ var SPEC = {
showDock: { def: false }, showDock: { def: false },
dockAutoHide: { def: false }, dockAutoHide: { def: false },
dockSmartAutoHide: { def: false }, dockSmartAutoHide: { def: false },
dockHideOnFullscreen: { def: true },
dockGroupByApp: { def: false }, dockGroupByApp: { def: false },
dockRestoreSpecialWorkspaceOnClick: { def: false }, dockRestoreSpecialWorkspaceOnClick: { def: false },
dockOpenOnOverview: { def: false }, dockOpenOnOverview: { def: false },
@@ -491,6 +492,7 @@ var SPEC = {
popupGapsAuto: true, popupGapsAuto: true,
popupGapsManual: 4, popupGapsManual: 4,
maximizeDetection: true, maximizeDetection: true,
fullscreenDetection: true,
scrollEnabled: true, scrollEnabled: true,
scrollXBehavior: "column", scrollXBehavior: "column",
scrollYBehavior: "workspace", scrollYBehavior: "workspace",
@@ -310,6 +310,10 @@ PanelWindow {
} }
function _updateHasFullscreenToplevel() { function _updateHasFullscreenToplevel() {
if (!(barConfig?.fullscreenDetection ?? true)) {
hasFullscreenToplevel = false;
return;
}
hasFullscreenToplevel = CompositorService.hasFullscreenToplevelOnScreen(screenName); hasFullscreenToplevel = CompositorService.hasFullscreenToplevelOnScreen(screenName);
} }
@@ -593,6 +597,7 @@ PanelWindow {
barWindow.updateGpuTempConfig(); barWindow.updateGpuTempConfig();
barWindow._updateBackgroundAlpha(); barWindow._updateBackgroundAlpha();
barWindow._updateHasMaximizedToplevel(); barWindow._updateHasMaximizedToplevel();
barWindow._updateHasFullscreenToplevel();
barWindow._updateShouldHideForWindows(); barWindow._updateShouldHideForWindows();
} }
+2
View File
@@ -164,6 +164,8 @@ Variants {
readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "") readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "")
readonly property bool hasFullscreenToplevel: { readonly property bool hasFullscreenToplevel: {
if (!SettingsData.dockHideOnFullscreen)
return false;
CompositorService.sortedToplevels; CompositorService.sortedToplevels;
ToplevelManager.activeToplevel; ToplevelManager.activeToplevel;
if (CompositorService.isNiri) { if (CompositorService.isNiri) {
@@ -136,6 +136,7 @@ Item {
popupGapsAuto: defaultBar.popupGapsAuto ?? true, popupGapsAuto: defaultBar.popupGapsAuto ?? true,
popupGapsManual: defaultBar.popupGapsManual ?? 4, popupGapsManual: defaultBar.popupGapsManual ?? 4,
maximizeDetection: defaultBar.maximizeDetection ?? true, maximizeDetection: defaultBar.maximizeDetection ?? true,
fullscreenDetection: defaultBar.fullscreenDetection ?? true,
scrollEnabled: defaultBar.scrollEnabled ?? true, scrollEnabled: defaultBar.scrollEnabled ?? true,
scrollXBehavior: defaultBar.scrollXBehavior ?? "column", scrollXBehavior: defaultBar.scrollXBehavior ?? "column",
scrollYBehavior: defaultBar.scrollYBehavior ?? "workspace", scrollYBehavior: defaultBar.scrollYBehavior ?? "workspace",
@@ -706,6 +707,24 @@ Item {
}); });
} }
} }
Rectangle {
width: parent.width
height: 1
color: Theme.outline
opacity: 0.15
}
SettingsToggleRow {
text: I18n.tr("Hide When Fullscreen", "bar visibility toggle: hide the bar when a window is fullscreen")
checked: selectedBarConfig?.fullscreenDetection ?? true
onToggled: toggled => {
SettingsData.updateBarConfig(selectedBarId, {
fullscreenDetection: toggled
});
notifyHorizontalBarChange();
}
}
} }
SettingsControlledByFrame { SettingsControlledByFrame {
+10
View File
@@ -87,6 +87,16 @@ Item {
visible: CompositorService.isNiri visible: CompositorService.isNiri
onToggled: checked => SettingsData.set("dockOpenOnOverview", checked) onToggled: checked => SettingsData.set("dockOpenOnOverview", checked)
} }
SettingsToggleRow {
settingKey: "dockHideOnFullscreen"
tags: ["dock", "fullscreen", "hide"]
text: I18n.tr("Hide When Fullscreen", "dock visibility toggle: hide the dock when a window is fullscreen")
description: I18n.tr("Hide the dock when a window is fullscreen", "dock visibility toggle description")
checked: SettingsData.dockHideOnFullscreen
visible: SettingsData.showDock
onToggled: checked => SettingsData.set("dockHideOnFullscreen", checked)
}
} }
SettingsCard { SettingsCard {