diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index 5dbf821e..6956673a 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -270,6 +270,7 @@ Singleton { property bool scrollTitleEnabled: true property bool audioVisualizerEnabled: true property string audioScrollMode: "volume" + property int audioWheelScrollAmount: 5 property bool clockCompactMode: false property bool focusedWindowCompactMode: false property bool runningAppsCompactMode: true diff --git a/quickshell/Common/settings/SettingsSpec.js b/quickshell/Common/settings/SettingsSpec.js index 6ee7da85..f8144eee 100644 --- a/quickshell/Common/settings/SettingsSpec.js +++ b/quickshell/Common/settings/SettingsSpec.js @@ -125,6 +125,7 @@ var SPEC = { scrollTitleEnabled: { def: true }, audioVisualizerEnabled: { def: true }, audioScrollMode: { def: "volume" }, + audioWheelScrollAmount: { def: 5 }, clockCompactMode: { def: false }, focusedWindowCompactMode: { def: false }, runningAppsCompactMode: { def: true }, diff --git a/quickshell/Modules/DankBar/Widgets/Media.qml b/quickshell/Modules/DankBar/Widgets/Media.qml index a20cf9ed..ec936f6b 100644 --- a/quickshell/Modules/DankBar/Widgets/Media.qml +++ b/quickshell/Modules/DankBar/Widgets/Media.qml @@ -71,9 +71,9 @@ BasePill { let newVolume = currentVolume; if (isMouseWheelY) { if (deltaY > 0) { - newVolume = Math.min(100, currentVolume + 5); + newVolume = Math.min(100, currentVolume + SettingsData.audioWheelScrollAmount); } else if (deltaY < 0) { - newVolume = Math.max(0, currentVolume - 5); + newVolume = Math.max(0, currentVolume - SettingsData.audioWheelScrollAmount); } } else { scrollAccumulatorY += deltaY; diff --git a/quickshell/Modules/Settings/MediaPlayerTab.qml b/quickshell/Modules/Settings/MediaPlayerTab.qml index e6846abf..b1a4a5ae 100644 --- a/quickshell/Modules/Settings/MediaPlayerTab.qml +++ b/quickshell/Modules/Settings/MediaPlayerTab.qml @@ -65,6 +65,47 @@ Item { SettingsData.set("audioScrollMode", scrollOptsInternal[idx]); } } + + Item { + width: parent.width + height: audioWheelScrollAmountColumn.height + visible: SettingsData.audioScrollMode == "volume" + opacity: visible ? 1 : 0 + + Column { + id: audioWheelScrollAmountColumn + x: Theme.spacingL + width: 120 + spacing: Theme.spacingS + + StyledText { + text: I18n.tr("Adjust volume per scroll indent") + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + font.weight: Font.Medium + horizontalAlignment: Text.AlignLeft + } + + DankTextField { + width: 100 + height: 28 + placeholderText: "5" + text: SettingsData.audioWheelScrollAmount + maximumLength: 2 + font.pixelSize: Theme.fontSizeSmall + topPadding: Theme.spacingXS + bottomPadding: Theme.spacingXS + onEditingFinished: SettingsData.set("audioWheelScrollAmount", parseInt(text, 10)) + } + } + + Behavior on opacity { + NumberAnimation { + duration: Theme.mediumDuration + easing.type: Theme.emphasizedEasing + } + } + } } } }