From 4e930ba50a4c223aa4611369872ad11a1cd17f59 Mon Sep 17 00:00:00 2001 From: TheRealLorenz Date: Sat, 20 Aug 2022 22:21:57 +0200 Subject: [PATCH] Add 'max-volume' option to pulseaudio. Fixes #1607 --- man/waybar-pulseaudio.5.scd | 5 +++++ src/modules/pulseaudio.cpp | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/man/waybar-pulseaudio.5.scd b/man/waybar-pulseaudio.5.scd index 7de1028..07a0de8 100644 --- a/man/waybar-pulseaudio.5.scd +++ b/man/waybar-pulseaudio.5.scd @@ -96,6 +96,11 @@ Additionally you can control the volume by scrolling *up* or *down* while the cu default: true ++ Option to disable tooltip on hover. +*max-volume*: ++ + typeof: integer ++ + default: 100 ++ + The maximum volume that can be set, in percentage. + # FORMAT REPLACEMENTS *{desc}*: Pulseaudio port's description, for bluetooth it'll be the device name. diff --git a/src/modules/pulseaudio.cpp b/src/modules/pulseaudio.cpp index f6ff959..24b858d 100644 --- a/src/modules/pulseaudio.cpp +++ b/src/modules/pulseaudio.cpp @@ -90,12 +90,16 @@ bool waybar::modules::Pulseaudio::handleScroll(GdkEventScroll *e) { double volume_tick = static_cast(PA_VOLUME_NORM) / 100; pa_volume_t change = volume_tick; pa_cvolume pa_volume = pa_volume_; + int max_volume = 100; // isDouble returns true for integers as well, just in case if (config_["scroll-step"].isDouble()) { change = round(config_["scroll-step"].asDouble() * volume_tick); } + if (config_["max-volume"].isInt()) { + max_volume = std::min(0, config_["max-volume"].asInt()); + } if (dir == SCROLL_DIR::UP) { - if (volume_ + 1 <= 100) { + if (volume_ + 1 <= max_volume) { pa_cvolume_inc(&pa_volume, change); } } else if (dir == SCROLL_DIR::DOWN) {