From e2c4530f73f8f41b4842dba22d0258279142d8f8 Mon Sep 17 00:00:00 2001 From: ultherego Date: Mon, 8 Jun 2026 10:42:00 +0200 Subject: [PATCH] fix(frame): add widget end inset for edge widgets when Frame is enabled --- quickshell/Common/SettingsData.qml | 2 ++ quickshell/Common/settings/SettingsSpec.js | 3 ++- quickshell/Modules/DankBar/DankBarContent.qml | 9 ++++---- quickshell/Modules/Settings/FrameTab.qml | 21 +++++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index 60b62363c..9dfdbaace 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -263,6 +263,8 @@ Singleton { readonly property string frameModalEmergeSide: frameLauncherEmergeSide === "top" ? "bottom" : "top" property string frameMode: "connected" onFrameModeChanged: saveSettings() + property int frameBarEndInset: 0 + onFrameBarEndInsetChanged: saveSettings() property var connectedFrameBarStyleBackups: ({}) onConnectedFrameBarStyleBackupsChanged: saveSettings() readonly property bool connectedFrameModeActive: frameEnabled && frameMode === "connected" diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index aa6a76d0a..023a42446 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -585,7 +585,8 @@ var SPEC = { frameCloseGaps: { def: true }, frameLauncherEmergeSide: { def: "bottom" }, frameLauncherArcExtender: { def: false }, - frameMode: { def: "connected" } + frameMode: { def: "connected" }, + frameBarEndInset: { def: 0 } }; function getValidKeys() { diff --git a/quickshell/Modules/DankBar/DankBarContent.qml b/quickshell/Modules/DankBar/DankBarContent.qml index 9888d2974..78dd75da0 100644 --- a/quickshell/Modules/DankBar/DankBarContent.qml +++ b/quickshell/Modules/DankBar/DankBarContent.qml @@ -48,25 +48,26 @@ Item { onHasAdjacentRightBarLiveChanged: if (hasAdjacentRightBarLive) _hadAdjacentRightBar = true + readonly property real _frameEndInset: SettingsData.frameThickness + SettingsData.frameBarEndInset readonly property real _frameLeftInset: { if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || _barIsVertical) return 0; - return hasAdjacentLeftBarLive ? SettingsData.frameBarSize : (_hadAdjacentLeftBar ? _frameEdgeFloorInset : 0); + return hasAdjacentLeftBarLive ? SettingsData.frameBarSize : (_hadAdjacentLeftBar ? _frameEdgeFloorInset : _frameEndInset); } readonly property real _frameRightInset: { if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || _barIsVertical) return 0; - return hasAdjacentRightBarLive ? SettingsData.frameBarSize : (_hadAdjacentRightBar ? _frameEdgeFloorInset : 0); + return hasAdjacentRightBarLive ? SettingsData.frameBarSize : (_hadAdjacentRightBar ? _frameEdgeFloorInset : _frameEndInset); } readonly property real _frameTopInset: { if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || !_barIsVertical) return 0; - return hasAdjacentTopBarLive ? SettingsData.frameThickness : (_hadAdjacentTopBar ? _frameEdgeFloorInset : 0); + return hasAdjacentTopBarLive ? SettingsData.frameThickness : (_hadAdjacentTopBar ? _frameEdgeFloorInset : _frameEndInset); } readonly property real _frameBottomInset: { if (!_hasBarWindow || !SettingsData.frameEnabled || !_usesFrameBarChrome || !_barIsVertical) return 0; - return hasAdjacentBottomBarLive ? SettingsData.frameThickness : (_hadAdjacentBottomBar ? _frameEdgeFloorInset : 0); + return hasAdjacentBottomBarLive ? SettingsData.frameThickness : (_hadAdjacentBottomBar ? _frameEdgeFloorInset : _frameEndInset); } property alias hLeftSection: hLeftSection diff --git a/quickshell/Modules/Settings/FrameTab.qml b/quickshell/Modules/Settings/FrameTab.qml index 448499f0f..a1cf1d565 100644 --- a/quickshell/Modules/Settings/FrameTab.qml +++ b/quickshell/Modules/Settings/FrameTab.qml @@ -139,6 +139,27 @@ Item { } } + SettingsSliderRow { + id: barEndInsetSlider + settingKey: "frameBarEndInset" + tags: ["frame", "bar", "end", "inset", "widget", "padding", "edge"] + text: I18n.tr("Widget End Inset") + description: I18n.tr("Extra space between edge widgets and the frame corners") + unit: "px" + minimum: 0 + maximum: 20 + step: 1 + defaultValue: 0 + value: SettingsData.frameBarEndInset + onSliderDragFinished: v => SettingsData.set("frameBarEndInset", v) + + Binding { + target: barEndInsetSlider + property: "value" + value: SettingsData.frameBarEndInset + } + } + SettingsSliderRow { id: opacitySlider settingKey: "frameOpacity"