diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index f4e3b340..9cf57db0 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -449,7 +449,7 @@ Singleton { property bool dankLauncherV2UnloadOnClose: false property bool dankLauncherV2IncludeFilesInAll: false property bool dankLauncherV2IncludeFoldersInAll: false - property bool launcherShowOverFullscreen: false + property bool launcherUseOverlayLayer: false property string launcherStyle: "full" property string _legacyWeatherLocation: "New York, NY" @@ -607,7 +607,7 @@ Singleton { property bool showDock: false property bool dockAutoHide: false property bool dockSmartAutoHide: false - property bool dockShowOverFullscreen: false + property bool dockUseOverlayLayer: false property bool dockGroupByApp: false property bool dockRestoreSpecialWorkspaceOnClick: false property bool dockOpenOnOverview: false @@ -788,7 +788,7 @@ Singleton { "popupGapsAuto": true, "popupGapsManual": 4, "maximizeDetection": true, - "showOverFullscreen": false, + "useOverlayLayer": false, "scrollEnabled": true, "scrollXBehavior": "column", "scrollYBehavior": "workspace", diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index ef1560d8..9ff84901 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -213,7 +213,7 @@ var SPEC = { dankLauncherV2UnloadOnClose: { def: false }, dankLauncherV2IncludeFilesInAll: { def: false }, dankLauncherV2IncludeFoldersInAll: { def: false }, - launcherShowOverFullscreen: { def: false }, + launcherUseOverlayLayer: { def: false }, launcherStyle: { def: "full" }, useAutoLocation: { def: false }, @@ -333,7 +333,7 @@ var SPEC = { showDock: { def: false }, dockAutoHide: { def: false }, dockSmartAutoHide: { def: false }, - dockShowOverFullscreen: { def: false }, + dockUseOverlayLayer: { def: false }, dockGroupByApp: { def: false }, dockRestoreSpecialWorkspaceOnClick: { def: false }, dockOpenOnOverview: { def: false }, @@ -497,7 +497,7 @@ var SPEC = { popupGapsAuto: true, popupGapsManual: 4, maximizeDetection: true, - showOverFullscreen: false, + useOverlayLayer: false, scrollEnabled: true, scrollXBehavior: "column", scrollYBehavior: "workspace", diff --git a/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalConnected.qml b/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalConnected.qml index c376dea0..3671b1ab 100644 --- a/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalConnected.qml +++ b/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalConnected.qml @@ -41,7 +41,7 @@ Item { readonly property real screenWidth: effectiveScreen?.width ?? 1920 readonly property real screenHeight: effectiveScreen?.height ?? 1080 readonly property real dpr: effectiveScreen ? CompositorService.getScreenScale(effectiveScreen) : 1 - readonly property bool usesOverlayLayer: SettingsData.launcherShowOverFullscreen || triggerUsesOverlayLayer + readonly property bool usesOverlayLayer: SettingsData.launcherUseOverlayLayer || triggerUsesOverlayLayer readonly property var effectiveLauncherLayer: { switch (Quickshell.env("DMS_MODAL_LAYER")) { case "bottom": diff --git a/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalSpotlight.qml b/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalSpotlight.qml index 73f00b95..579bbd01 100644 --- a/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalSpotlight.qml +++ b/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalSpotlight.qml @@ -30,7 +30,8 @@ Item { readonly property real screenWidth: effectiveScreen?.width ?? 1920 readonly property real screenHeight: effectiveScreen?.height ?? 1080 readonly property real dpr: effectiveScreen ? CompositorService.getScreenScale(effectiveScreen) : 1 - readonly property bool usesOverlayLayer: SettingsData.launcherShowOverFullscreen || triggerUsesOverlayLayer + readonly property bool useBackgroundDarken: !SettingsData.frameEnabled && SettingsData.modalDarkenBackground + readonly property bool usesOverlayLayer: useBackgroundDarken || SettingsData.launcherUseOverlayLayer || triggerUsesOverlayLayer readonly property var effectiveLauncherLayer: { switch (Quickshell.env("DMS_MODAL_LAYER")) { case "bottom": @@ -275,7 +276,7 @@ Item { PanelWindow { id: clickCatcher screen: launcherWindow.screen - visible: spotlightOpen || isClosing + visible: (spotlightOpen || isClosing) && !root.useBackgroundDarken color: "transparent" WlrLayershell.namespace: "dms:spotlight:clickcatcher" @@ -347,17 +348,19 @@ Item { anchors { top: true left: true + right: root.useBackgroundDarken + bottom: root.useBackgroundDarken } WlrLayershell.margins { - left: root.windowX - top: root.windowY + left: root.useBackgroundDarken ? 0 : root.windowX + top: root.useBackgroundDarken ? 0 : root.windowY right: 0 bottom: 0 } - implicitWidth: root.windowWidth - implicitHeight: root.windowHeight + implicitWidth: root.useBackgroundDarken ? 0 : root.windowWidth + implicitHeight: root.useBackgroundDarken ? 0 : root.windowHeight mask: Region { item: inputMask @@ -367,19 +370,44 @@ Item { id: inputMask visible: false color: "transparent" - x: modalContainer.x - y: modalContainer.y + modalContainer.slideOffset - width: root.alignedWidth - height: root._contentImplicitH + x: root.useBackgroundDarken ? 0 : modalContainer.x + y: root.useBackgroundDarken ? 0 : modalContainer.y + modalContainer.slideOffset + width: root.useBackgroundDarken ? launcherWindow.width : root.alignedWidth + height: root.useBackgroundDarken ? launcherWindow.height : root._contentImplicitH + } + + MouseArea { + anchors.fill: parent + enabled: root.useBackgroundDarken && spotlightOpen + z: -2 + onClicked: root.hide() + } + + Rectangle { + id: backgroundDarken + anchors.fill: parent + color: "black" + opacity: contentVisible && root.useBackgroundDarken ? 0.5 : 0 + visible: (spotlightOpen || isClosing) && (root.useBackgroundDarken || opacity > 0) + z: -3 + + Behavior on opacity { + NumberAnimation { + duration: contentVisible ? root._openDuration : root._closeDuration + easing.type: Easing.BezierSpline + easing.bezierCurve: contentVisible ? [0.0, 0.0, 0.2, 1.0, 1.0, 1.0] : [0.4, 0.0, 1.0, 1.0, 1.0, 1.0] + } + } } Item { id: modalContainer - x: root.contentX - y: root.contentY + x: root.useBackgroundDarken ? root.alignedX : root.contentX + y: root.useBackgroundDarken ? root.alignedY : root.contentY width: root.alignedWidth height: root._animatedContentH visible: _renderActive + z: 0 property bool _renderActive: contentVisible property real slideOffset: contentVisible ? 0 : -root._animHeadroom diff --git a/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalStandalone.qml b/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalStandalone.qml index c0b51b0a..7a40abc9 100644 --- a/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalStandalone.qml +++ b/quickshell/Modals/DankLauncherV2/DankLauncherV2ModalStandalone.qml @@ -80,7 +80,7 @@ Item { readonly property color backgroundColor: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency) readonly property bool useBackgroundDarken: !SettingsData.frameEnabled && SettingsData.modalDarkenBackground - readonly property bool usesOverlayLayer: useBackgroundDarken || SettingsData.launcherShowOverFullscreen || triggerUsesOverlayLayer + readonly property bool usesOverlayLayer: useBackgroundDarken || SettingsData.launcherUseOverlayLayer || triggerUsesOverlayLayer readonly property var effectiveLauncherLayer: { switch (Quickshell.env("DMS_MODAL_LAYER")) { case "bottom": @@ -312,9 +312,8 @@ Item { PanelWindow { id: clickCatcher screen: launcherWindow.screen - visible: spotlightOpen || isClosing + visible: (spotlightOpen || isClosing) && !root.useBackgroundDarken color: "transparent" - updatesEnabled: root.useBackgroundDarken && (spotlightOpen || isClosing) WlrLayershell.namespace: "dms:spotlight:clickcatcher" WlrLayershell.layer: root.effectiveLauncherLayer @@ -358,22 +357,6 @@ Item { enabled: spotlightOpen onClicked: root.hide() } - - Rectangle { - id: backgroundDarken - anchors.fill: parent - color: "black" - opacity: contentVisible && root.useBackgroundDarken ? 0.5 : 0 - visible: (spotlightOpen || isClosing) && (root.useBackgroundDarken || opacity > 0) - - Behavior on opacity { - NumberAnimation { - easing.type: Easing.BezierSpline - duration: Theme.modalAnimationDuration - easing.bezierCurve: contentVisible ? Theme.expressiveCurves.expressiveDefaultSpatial : Theme.expressiveCurves.emphasized - } - } - } } PanelWindow { @@ -401,17 +384,19 @@ Item { anchors { top: true left: true + right: root.useBackgroundDarken + bottom: root.useBackgroundDarken } WlrLayershell.margins { - left: root.windowX - top: root.windowY + left: root.useBackgroundDarken ? 0 : root.windowX + top: root.useBackgroundDarken ? 0 : root.windowY right: 0 bottom: 0 } - implicitWidth: root.windowWidth - implicitHeight: root.windowHeight + implicitWidth: root.useBackgroundDarken ? 0 : root.windowWidth + implicitHeight: root.useBackgroundDarken ? 0 : root.windowHeight mask: Region { item: launcherInputMask @@ -421,19 +406,44 @@ Item { id: launcherInputMask visible: false color: "transparent" - x: modalContainer.x - y: modalContainer.y - width: modalContainer.width - height: modalContainer.height + x: root.useBackgroundDarken ? 0 : modalContainer.x + y: root.useBackgroundDarken ? 0 : modalContainer.y + width: root.useBackgroundDarken ? launcherWindow.width : modalContainer.width + height: root.useBackgroundDarken ? launcherWindow.height : modalContainer.height + } + + MouseArea { + anchors.fill: parent + enabled: root.useBackgroundDarken && spotlightOpen + z: -2 + onClicked: root.hide() + } + + Rectangle { + id: backgroundDarken + anchors.fill: parent + color: "black" + opacity: contentVisible && root.useBackgroundDarken ? 0.5 : 0 + visible: (spotlightOpen || isClosing) && (root.useBackgroundDarken || opacity > 0) + z: -3 + + Behavior on opacity { + NumberAnimation { + easing.type: Easing.BezierSpline + duration: Theme.modalAnimationDuration + easing.bezierCurve: contentVisible ? Theme.expressiveCurves.expressiveDefaultSpatial : Theme.expressiveCurves.emphasized + } + } } Item { id: modalContainer - x: root.contentX - y: root.contentY + x: root.useBackgroundDarken ? root.alignedX : root.contentX + y: root.useBackgroundDarken ? root.alignedY : root.contentY width: root.alignedWidth height: root.alignedHeight visible: _renderActive + z: 0 property bool _renderActive: contentVisible property real publishedScale: contentVisible ? 1 : 0.96 diff --git a/quickshell/Modules/DankBar/BarCanvas.qml b/quickshell/Modules/DankBar/BarCanvas.qml index f9afb938..26a2be2b 100644 --- a/quickshell/Modules/DankBar/BarCanvas.qml +++ b/quickshell/Modules/DankBar/BarCanvas.qml @@ -10,7 +10,7 @@ Item { required property var axis required property var barConfig - readonly property bool frameShapesBar: SettingsData.frameEnabled && barWindow.usesConnectedFrameChrome + readonly property bool frameShapesBar: SettingsData.frameEnabled && barWindow.usesFrameBarChrome visible: !frameShapesBar diff --git a/quickshell/Modules/DankBar/DankBarContent.qml b/quickshell/Modules/DankBar/DankBarContent.qml index 93b03b40..d57fac61 100644 --- a/quickshell/Modules/DankBar/DankBarContent.qml +++ b/quickshell/Modules/DankBar/DankBarContent.qml @@ -25,8 +25,8 @@ Item { readonly property real outlineThickness: (barConfig?.widgetOutlineEnabled ?? false) ? (barConfig?.widgetOutlineThickness ?? 1) : 0 readonly property real _edgeBaseMargin: Math.max(Theme.spacingXS, innerPadding * 0.8) readonly property bool _hasBarWindow: barWindow !== undefined && barWindow !== null - readonly property bool _usesConnectedFrameChrome: _hasBarWindow && (barWindow.usesConnectedFrameChrome ?? false) - readonly property real _frameEdgeFloorInset: (SettingsData.frameEnabled && _usesConnectedFrameChrome) ? Math.max(0, SettingsData.frameThickness - _edgeBaseMargin) : 0 + readonly property bool _usesFrameBarChrome: _hasBarWindow && (barWindow.usesFrameBarChrome ?? false) + readonly property real _frameEdgeFloorInset: (SettingsData.frameEnabled && _usesFrameBarChrome) ? Math.max(0, SettingsData.frameThickness - _edgeBaseMargin) : 0 readonly property bool _barIsVertical: _hasBarWindow ? barWindow.isVertical : false readonly property string _barScreenName: _hasBarWindow ? (barWindow.screenName || "") : "" readonly property bool hasAdjacentTopBarLive: _hasBarWindow && barWindow.hasAdjacentTopBar @@ -48,22 +48,22 @@ Item { _hadAdjacentRightBar = true readonly property real _frameLeftInset: { - if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesConnectedFrameChrome || _barIsVertical) + if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || _barIsVertical) return 0; return hasAdjacentLeftBarLive ? SettingsData.frameBarSize : (_hadAdjacentLeftBar ? _frameEdgeFloorInset : 0); } readonly property real _frameRightInset: { - if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesConnectedFrameChrome || _barIsVertical) + if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || _barIsVertical) return 0; return hasAdjacentRightBarLive ? SettingsData.frameBarSize : (_hadAdjacentRightBar ? _frameEdgeFloorInset : 0); } readonly property real _frameTopInset: { - if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesConnectedFrameChrome || !_barIsVertical) + if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || !_barIsVertical) return 0; return hasAdjacentTopBarLive ? SettingsData.frameThickness : (_hadAdjacentTopBar ? _frameEdgeFloorInset : 0); } readonly property real _frameBottomInset: { - if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesConnectedFrameChrome || !_barIsVertical) + if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || !_barIsVertical) return 0; return hasAdjacentBottomBarLive ? SettingsData.frameThickness : (_hadAdjacentBottomBar ? _frameEdgeFloorInset : 0); } @@ -96,7 +96,7 @@ Item { } Behavior on anchors.leftMargin { - enabled: _animateFrameInsets && _usesConnectedFrameChrome + enabled: _animateFrameInsets && _usesFrameBarChrome NumberAnimation { duration: Theme.shortDuration easing.type: Easing.OutCubic @@ -104,7 +104,7 @@ Item { } Behavior on anchors.rightMargin { - enabled: _animateFrameInsets && _usesConnectedFrameChrome + enabled: _animateFrameInsets && _usesFrameBarChrome NumberAnimation { duration: Theme.shortDuration easing.type: Easing.OutCubic @@ -112,7 +112,7 @@ Item { } Behavior on anchors.topMargin { - enabled: _animateFrameInsets && _usesConnectedFrameChrome + enabled: _animateFrameInsets && _usesFrameBarChrome NumberAnimation { duration: Theme.shortDuration easing.type: Easing.OutCubic @@ -120,7 +120,7 @@ Item { } Behavior on anchors.bottomMargin { - enabled: _animateFrameInsets && _usesConnectedFrameChrome + enabled: _animateFrameInsets && _usesFrameBarChrome NumberAnimation { duration: Theme.shortDuration easing.type: Easing.OutCubic diff --git a/quickshell/Modules/DankBar/DankBarWindow.qml b/quickshell/Modules/DankBar/DankBarWindow.qml index 43ae8185..2dbdc3d2 100644 --- a/quickshell/Modules/DankBar/DankBarWindow.qml +++ b/quickshell/Modules/DankBar/DankBarWindow.qml @@ -108,7 +108,7 @@ PanelWindow { triggerDashTab(2); } - readonly property bool usesOverlayLayer: CompositorService.framePeerSurfacesUseOverlayForScreen(barWindow.screen) || (barConfig?.showOverFullscreen ?? false) + readonly property bool usesOverlayLayer: CompositorService.framePeerSurfacesUseOverlayForScreen(barWindow.screen) || (barConfig?.useOverlayLayer ?? false) readonly property var dBarLayer: { switch (Quickshell.env("DMS_DANKBAR_LAYER")) { @@ -156,6 +156,9 @@ PanelWindow { function onUsesConnectedFrameChromeChanged() { _blurRebuildTimer.restart(); } + function onUsesFrameBarChromeChanged() { + _blurRebuildTimer.restart(); + } } Component { @@ -185,7 +188,7 @@ PanelWindow { // 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. - if (SettingsData.frameEnabled && barWindow.usesConnectedFrameChrome) + if (SettingsData.frameEnabled && barWindow.usesFrameBarChrome) return; const widgets = barWindow._blurWidgetItems.filter(w => w && w.visible && w.width > 0 && w.height > 0); @@ -298,7 +301,7 @@ PanelWindow { readonly property color _surfaceContainer: Theme.surfaceContainer readonly property string _barId: barConfig?.id ?? "default" property real _backgroundAlpha: barConfig?.transparency ?? 1.0 - readonly property color _bgColor: (SettingsData.frameEnabled && usesConnectedFrameChrome) ? Qt.rgba(SettingsData.effectiveFrameColor.r, SettingsData.effectiveFrameColor.g, SettingsData.effectiveFrameColor.b, SettingsData.frameOpacity) : Theme.withAlpha(_surfaceContainer, _backgroundAlpha) + readonly property color _bgColor: (SettingsData.frameEnabled && usesFrameBarChrome) ? Qt.rgba(SettingsData.effectiveFrameColor.r, SettingsData.effectiveFrameColor.g, SettingsData.effectiveFrameColor.b, SettingsData.frameOpacity) : Theme.withAlpha(_surfaceContainer, _backgroundAlpha) function _updateBackgroundAlpha() { const live = SettingsData.barConfigs.find(c => c.id === _barId); @@ -323,10 +326,11 @@ PanelWindow { property string screenName: modelData.name readonly property bool usesConnectedFrameChrome: CompositorService.usesConnectedFrameChromeForScreen(screenName) + readonly property bool usesFrameBarChrome: CompositorService.frameWindowVisibleForScreen(screenName) // Flatten/spacing collapse for maximized windows is only for frame-integrated layout. // When the bar draws its own pill, keep rounded corners and spacing like the dock. - readonly property bool flattenForMaximizedWindow: !SettingsData.frameEnabled || usesConnectedFrameChrome + readonly property bool flattenForMaximizedWindow: !SettingsData.frameEnabled || usesFrameBarChrome property bool hasMaximizedToplevel: false property bool shouldHideForWindows: false @@ -430,7 +434,7 @@ PanelWindow { shouldHideForWindows = filtered.length > 0; } - property real effectiveSpacing: (SettingsData.frameEnabled && usesConnectedFrameChrome) ? 0 : ((flattenForMaximizedWindow && hasMaximizedToplevel) ? 0 : (barConfig?.spacing ?? 4)) + property real effectiveSpacing: (SettingsData.frameEnabled && usesFrameBarChrome) ? 0 : ((flattenForMaximizedWindow && hasMaximizedToplevel) ? 0 : (barConfig?.spacing ?? 4)) Behavior on effectiveSpacing { enabled: barWindow.visible @@ -441,7 +445,7 @@ PanelWindow { } readonly property int notificationCount: NotificationService.notifications.length - readonly property real effectiveBarThickness: (SettingsData.frameEnabled && usesConnectedFrameChrome) ? SettingsData.frameBarSize : Theme.snap(Math.max(barWindow.widgetThickness + (barConfig?.innerPadding ?? 4) + 4, Theme.barHeight - 4 - (8 - (barConfig?.innerPadding ?? 4))), _dpr) + readonly property real effectiveBarThickness: (SettingsData.frameEnabled && usesFrameBarChrome) ? SettingsData.frameBarSize : Theme.snap(Math.max(barWindow.widgetThickness + (barConfig?.innerPadding ?? 4) + 4, Theme.barHeight - 4 - (8 - (barConfig?.innerPadding ?? 4))), _dpr) readonly property bool effectiveOpenOnOverview: SettingsData.frameEnabled ? SettingsData.frameShowOnOverview : (barConfig?.openOnOverview ?? false) readonly property real widgetThickness: Theme.snap(Math.max(20, 26 + (barConfig?.innerPadding ?? 4) * 0.6), _dpr) @@ -639,9 +643,9 @@ PanelWindow { anchors.left: !isVertical ? true : (barPos === SettingsData.Position.Left) anchors.right: !isVertical ? true : (barPos === SettingsData.Position.Right) - readonly property bool reserveExclusiveWhenAutoHidden: SettingsData.connectedFrameModeActive && usesConnectedFrameChrome && !!barWindow.screen && SettingsData.isScreenInPreferences(barWindow.screen, SettingsData.frameScreenPreferences) + readonly property bool reserveExclusiveWhenAutoHidden: SettingsData.frameEnabled && usesFrameBarChrome && !!barWindow.screen && SettingsData.isScreenInPreferences(barWindow.screen, SettingsData.frameScreenPreferences) - exclusiveZone: (!(barConfig?.visible ?? true) || (topBarCore.autoHide && !barWindow.reserveExclusiveWhenAutoHidden)) ? -1 : (barWindow.effectiveBarThickness + effectiveSpacing + (usesConnectedFrameChrome ? 0 : (barConfig?.bottomGap ?? 0))) + exclusiveZone: (!(barConfig?.visible ?? true) || (topBarCore.autoHide && !barWindow.reserveExclusiveWhenAutoHidden)) ? -1 : (barWindow.effectiveBarThickness + effectiveSpacing + (usesFrameBarChrome ? 0 : (barConfig?.bottomGap ?? 0))) Item { id: inputMask diff --git a/quickshell/Modules/Dock/Dock.qml b/quickshell/Modules/Dock/Dock.qml index 79d21090..be2004b0 100644 --- a/quickshell/Modules/Dock/Dock.qml +++ b/quickshell/Modules/Dock/Dock.qml @@ -176,7 +176,7 @@ Variants { readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "") readonly property bool usesConnectedFrameChrome: CompositorService.usesConnectedFrameChromeForScreen(dock._dockScreenName) - readonly property bool usesOverlayLayer: CompositorService.framePeerSurfacesUseOverlayForScreen(dock._dockScreenName) || SettingsData.dockShowOverFullscreen + readonly property bool usesOverlayLayer: CompositorService.framePeerSurfacesUseOverlayForScreen(dock._dockScreenName) || SettingsData.dockUseOverlayLayer function _syncDockChromeState() { if (!dock._dockScreenName) diff --git a/quickshell/Modules/Plugins/BasePill.qml b/quickshell/Modules/Plugins/BasePill.qml index 841082a5..d76fffc5 100644 --- a/quickshell/Modules/Plugins/BasePill.qml +++ b/quickshell/Modules/Plugins/BasePill.qml @@ -48,7 +48,7 @@ Item { case "top": return false; default: - return (barConfig?.showOverFullscreen ?? false) || CompositorService.framePeerSurfacesUseOverlayForScreen(parentScreen); + return (barConfig?.useOverlayLayer ?? false) || CompositorService.framePeerSurfacesUseOverlayForScreen(parentScreen); } } diff --git a/quickshell/Modules/Settings/DankBarTab.qml b/quickshell/Modules/Settings/DankBarTab.qml index 21e92cfa..bdd583dc 100644 --- a/quickshell/Modules/Settings/DankBarTab.qml +++ b/quickshell/Modules/Settings/DankBarTab.qml @@ -137,7 +137,7 @@ Item { popupGapsAuto: defaultBar.popupGapsAuto ?? true, popupGapsManual: defaultBar.popupGapsManual ?? 4, maximizeDetection: defaultBar.maximizeDetection ?? true, - showOverFullscreen: defaultBar.showOverFullscreen ?? false, + useOverlayLayer: defaultBar.useOverlayLayer ?? false, scrollEnabled: defaultBar.scrollEnabled ?? true, scrollXBehavior: defaultBar.scrollXBehavior ?? "column", scrollYBehavior: defaultBar.scrollYBehavior ?? "workspace", @@ -729,14 +729,14 @@ Item { } SettingsToggleRow { - settingKey: "barShowOverFullscreen" + settingKey: "barUseOverlayLayer" tags: ["bar", "fullscreen", "overlay", "layer"] - text: I18n.tr("Show Over Fullscreen", "bar layer toggle: show the bar over fullscreen windows") - description: I18n.tr("Use the overlay layer so this bar appears above fullscreen windows") - checked: selectedBarConfig?.showOverFullscreen ?? false + text: I18n.tr("Use Overlay Layer", "bar layer toggle: use Wayland overlay layer") + description: I18n.tr("Place the bar on the Wayland overlay layer") + checked: selectedBarConfig?.useOverlayLayer ?? false onToggled: toggled => { SettingsData.updateBarConfig(selectedBarId, { - showOverFullscreen: toggled + useOverlayLayer: toggled }); notifyHorizontalBarChange(); } diff --git a/quickshell/Modules/Settings/DockTab.qml b/quickshell/Modules/Settings/DockTab.qml index 82061df2..afd8e7f1 100644 --- a/quickshell/Modules/Settings/DockTab.qml +++ b/quickshell/Modules/Settings/DockTab.qml @@ -90,13 +90,13 @@ Item { } SettingsToggleRow { - settingKey: "dockShowOverFullscreen" + settingKey: "dockUseOverlayLayer" tags: ["dock", "fullscreen", "overlay", "layer"] - text: I18n.tr("Show Over Fullscreen", "dock layer toggle: show the dock over fullscreen windows") - description: I18n.tr("Use the overlay layer so the dock appears above fullscreen windows") - checked: SettingsData.dockShowOverFullscreen + text: I18n.tr("Use Overlay Layer", "dock layer toggle: use Wayland overlay layer") + description: I18n.tr("Place the dock on the Wayland overlay layer") + checked: SettingsData.dockUseOverlayLayer visible: SettingsData.showDock - onToggled: checked => SettingsData.set("dockShowOverFullscreen", checked) + onToggled: checked => SettingsData.set("dockUseOverlayLayer", checked) } } diff --git a/quickshell/Modules/Settings/LauncherTab.qml b/quickshell/Modules/Settings/LauncherTab.qml index d850208c..0ccfcef1 100644 --- a/quickshell/Modules/Settings/LauncherTab.qml +++ b/quickshell/Modules/Settings/LauncherTab.qml @@ -69,12 +69,12 @@ Item { } SettingsToggleRow { - settingKey: "launcherShowOverFullscreen" + settingKey: "launcherUseOverlayLayer" tags: ["launcher", "fullscreen", "overlay", "layer"] - text: I18n.tr("Show Over Fullscreen", "launcher layer toggle: show the launcher over fullscreen windows") + text: I18n.tr("Use Overlay Layer", "launcher layer toggle: use Wayland overlay layer") description: I18n.tr("Use the overlay layer when opening the launcher") - checked: SettingsData.launcherShowOverFullscreen - onToggled: checked => SettingsData.set("launcherShowOverFullscreen", checked) + checked: SettingsData.launcherUseOverlayLayer + onToggled: checked => SettingsData.set("launcherUseOverlayLayer", checked) } } diff --git a/quickshell/Widgets/DankPopout.qml b/quickshell/Widgets/DankPopout.qml index 4f626dde..27ddb0ba 100644 --- a/quickshell/Widgets/DankPopout.qml +++ b/quickshell/Widgets/DankPopout.qml @@ -178,7 +178,7 @@ Item { case "top": return false; default: - return (barConfig?.showOverFullscreen ?? false) || CompositorService.framePeerSurfacesUseOverlayForScreen(targetScreen); + return (barConfig?.useOverlayLayer ?? false) || CompositorService.framePeerSurfacesUseOverlayForScreen(targetScreen); } } diff --git a/quickshell/translations/settings_search_index.json b/quickshell/translations/settings_search_index.json index dd0ccc83..153ca42c 100644 --- a/quickshell/translations/settings_search_index.json +++ b/quickshell/translations/settings_search_index.json @@ -854,29 +854,6 @@ "icon": "layers", "description": "Override the global shadow with per-bar settings" }, - { - "section": "barShowOverFullscreen", - "label": "Show Over Fullscreen", - "tabIndex": 3, - "category": "Dank Bar", - "keywords": [ - "above", - "appears", - "bar", - "dank", - "fullscreen", - "layer", - "over", - "overlay", - "panel", - "show", - "statusbar", - "taskbar", - "topbar", - "windows" - ], - "description": "Use the overlay layer so this bar appears above fullscreen windows" - }, { "section": "barSpacing", "label": "Spacing", @@ -944,14 +921,32 @@ ], "icon": "opacity" }, + { + "section": "barUseOverlayLayer", + "label": "Use Overlay Layer", + "tabIndex": 3, + "category": "Dank Bar", + "keywords": [ + "bar", + "dank", + "fullscreen", + "layer", + "overlay", + "panel", + "place", + "statusbar", + "taskbar", + "topbar", + "wayland" + ], + "description": "Place this bar on the Wayland overlay layer" + }, { "section": "barVisibility", "label": "Visibility", "tabIndex": 3, "category": "Dank Bar", "keywords": [ - "above", - "appears", "auto-hide", "autohide", "bar", @@ -962,16 +957,17 @@ "layer", "overlay", "panel", + "place", "show", "statusbar", "taskbar", "topbar", "visibility", "visible", - "windows" + "wayland" ], "icon": "visibility_off", - "description": "Use the overlay layer so this bar appears above fullscreen windows" + "description": "Place this bar on the Wayland overlay layer" }, { "section": "workspaceDragReorder", @@ -1757,27 +1753,6 @@ "taskbar" ] }, - { - "section": "dockShowOverFullscreen", - "label": "Show Over Fullscreen", - "tabIndex": 5, - "category": "Dock", - "keywords": [ - "above", - "appears", - "dock", - "fullscreen", - "launcher bar", - "layer", - "over", - "overlay", - "panel", - "show", - "taskbar", - "windows" - ], - "description": "Use the overlay layer so the dock appears above fullscreen windows" - }, { "section": "dockShowOverflowBadge", "label": "Show Overflow Badge Count", @@ -1924,6 +1899,24 @@ "icon": "delete", "description": "Place a trash bin at the end of the dock" }, + { + "section": "dockUseOverlayLayer", + "label": "Use Overlay Layer", + "tabIndex": 5, + "category": "Dock", + "keywords": [ + "dock", + "fullscreen", + "launcher bar", + "layer", + "overlay", + "panel", + "place", + "taskbar", + "wayland" + ], + "description": "Place the dock on the Wayland overlay layer" + }, { "section": "_tab_7", "label": "Network", @@ -2401,29 +2394,6 @@ ], "description": "Show mode tabs and keyboard hints at the bottom." }, - { - "section": "launcherShowOverFullscreen", - "label": "Show Over Fullscreen", - "tabIndex": 9, - "category": "Launcher", - "keywords": [ - "app drawer", - "app menu", - "applications", - "drawer", - "fullscreen", - "launcher", - "layer", - "menu", - "opening", - "over", - "overlay", - "show", - "start", - "start menu" - ], - "description": "Use the overlay layer when opening the launcher" - }, { "section": "launcherLogoSizeOffset", "label": "Size Offset", @@ -2546,6 +2516,27 @@ ], "description": "Free VRAM/memory when the launcher is closed. May cause a slight delay when reopening." }, + { + "section": "launcherUseOverlayLayer", + "label": "Use Overlay Layer", + "tabIndex": 9, + "category": "Launcher", + "keywords": [ + "app drawer", + "app menu", + "applications", + "drawer", + "fullscreen", + "launcher", + "layer", + "menu", + "opening", + "overlay", + "start", + "start menu" + ], + "description": "Use the overlay layer when opening the launcher" + }, { "section": "matugenTemplateAlacritty", "label": "Alacritty",