diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index d864d6c7..a8a134e9 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -589,6 +589,7 @@ Singleton { property bool showDock: false property bool dockAutoHide: false property bool dockSmartAutoHide: false + property bool dockHideOnFullscreen: true property bool dockGroupByApp: false property bool dockRestoreSpecialWorkspaceOnClick: false property bool dockOpenOnOverview: false diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index e5180bd2..ea6f5616 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -329,6 +329,7 @@ var SPEC = { showDock: { def: false }, dockAutoHide: { def: false }, dockSmartAutoHide: { def: false }, + dockHideOnFullscreen: { def: true }, dockGroupByApp: { def: false }, dockRestoreSpecialWorkspaceOnClick: { def: false }, dockOpenOnOverview: { def: false }, @@ -491,6 +492,7 @@ var SPEC = { popupGapsAuto: true, popupGapsManual: 4, maximizeDetection: true, + fullscreenDetection: true, scrollEnabled: true, scrollXBehavior: "column", scrollYBehavior: "workspace", diff --git a/quickshell/Modules/DankBar/DankBarWindow.qml b/quickshell/Modules/DankBar/DankBarWindow.qml index cc9aef3f..222ad98e 100644 --- a/quickshell/Modules/DankBar/DankBarWindow.qml +++ b/quickshell/Modules/DankBar/DankBarWindow.qml @@ -310,6 +310,10 @@ PanelWindow { } function _updateHasFullscreenToplevel() { + if (!(barConfig?.fullscreenDetection ?? true)) { + hasFullscreenToplevel = false; + return; + } hasFullscreenToplevel = CompositorService.hasFullscreenToplevelOnScreen(screenName); } @@ -593,6 +597,7 @@ PanelWindow { barWindow.updateGpuTempConfig(); barWindow._updateBackgroundAlpha(); barWindow._updateHasMaximizedToplevel(); + barWindow._updateHasFullscreenToplevel(); barWindow._updateShouldHideForWindows(); } diff --git a/quickshell/Modules/Dock/Dock.qml b/quickshell/Modules/Dock/Dock.qml index ab4ed229..aaccb195 100644 --- a/quickshell/Modules/Dock/Dock.qml +++ b/quickshell/Modules/Dock/Dock.qml @@ -164,6 +164,8 @@ Variants { readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "") readonly property bool hasFullscreenToplevel: { + if (!SettingsData.dockHideOnFullscreen) + return false; CompositorService.sortedToplevels; ToplevelManager.activeToplevel; if (CompositorService.isNiri) { diff --git a/quickshell/Modules/Settings/DankBarTab.qml b/quickshell/Modules/Settings/DankBarTab.qml index ab3d1a57..677758c6 100644 --- a/quickshell/Modules/Settings/DankBarTab.qml +++ b/quickshell/Modules/Settings/DankBarTab.qml @@ -136,6 +136,7 @@ Item { popupGapsAuto: defaultBar.popupGapsAuto ?? true, popupGapsManual: defaultBar.popupGapsManual ?? 4, maximizeDetection: defaultBar.maximizeDetection ?? true, + fullscreenDetection: defaultBar.fullscreenDetection ?? true, scrollEnabled: defaultBar.scrollEnabled ?? true, scrollXBehavior: defaultBar.scrollXBehavior ?? "column", 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 { diff --git a/quickshell/Modules/Settings/DockTab.qml b/quickshell/Modules/Settings/DockTab.qml index 8ade7e07..0dc37cfc 100644 --- a/quickshell/Modules/Settings/DockTab.qml +++ b/quickshell/Modules/Settings/DockTab.qml @@ -87,6 +87,16 @@ Item { visible: CompositorService.isNiri 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 {