From a8baaa9929b67dd3fdc4b627f19e8c8f5000ceef Mon Sep 17 00:00:00 2001 From: Belal Date: Mon, 8 Sep 2025 16:55:46 +0300 Subject: bar: configurable scroll actions (#559) * bar: add option to disable scroll actions for volume and brightness * options for workspaces, brightness and volume * add options to readme + format --------- Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> --- README.md | 5 +++++ config/BarConfig.qml | 7 +++++++ modules/bar/Bar.qml | 6 +++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 28f99a4..8749ae4 100644 --- a/README.md +++ b/README.md @@ -314,6 +314,11 @@ default, you must create it manually. } ], "persistent": true, + "scrollActions": { + "brightness": true, + "workspaces": true, + "volume": true + }, "showOnHover": true, "status": { "showAudio": false, diff --git a/config/BarConfig.qml b/config/BarConfig.qml index 283e114..65236bd 100644 --- a/config/BarConfig.qml +++ b/config/BarConfig.qml @@ -4,6 +4,7 @@ JsonObject { property bool persistent: true property bool showOnHover: true property int dragThreshold: 20 + property ScrollActions scrollActions: ScrollActions {} property Workspaces workspaces: Workspaces {} property Tray tray: Tray {} property Status status: Status {} @@ -53,6 +54,12 @@ JsonObject { } ] + component ScrollActions: JsonObject { + property bool workspaces: true + property bool volume: true + property bool brightness: true + } + component Workspaces: JsonObject { property int shown: 5 property bool activeIndicator: true diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index 0382b5d..9cd5d24 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -54,7 +54,7 @@ ColumnLayout { function handleWheel(y: real, angleDelta: point): void { const ch = childAt(width / 2, y) as WrappedLoader; - if (ch?.id === "workspaces") { + if (ch?.id === "workspaces" && Config.bar.scrollActions.workspaces) { // Workspace scroll const mon = (Config.bar.workspaces.perMonitorWorkspaces ? Hypr.monitorFor(screen) : Hypr.focusedMonitor); const specialWs = mon?.lastIpcObject.specialWorkspace.name; @@ -62,13 +62,13 @@ ColumnLayout { Hypr.dispatch(`togglespecialworkspace ${specialWs.slice(8)}`); else if (angleDelta.y < 0 || (Config.bar.workspaces.perMonitorWorkspaces ? mon.activeWorkspace?.id : Hypr.activeWsId) > 1) Hypr.dispatch(`workspace r${angleDelta.y > 0 ? "-" : "+"}1`); - } else if (y < screen.height / 2) { + } else if (y < screen.height / 2 && Config.bar.scrollActions.volume) { // Volume scroll on top half if (angleDelta.y > 0) Audio.incrementVolume(); else if (angleDelta.y < 0) Audio.decrementVolume(); - } else { + } else if (Config.bar.scrollActions.brightness) { // Brightness scroll on bottom half const monitor = Brightness.getMonitorForScreen(screen); if (angleDelta.y > 0) -- cgit v1.2.3-freya