Skip to content

Commit 26909ac

Browse files
committed
fix: #1341
Fixes: #1341
1 parent e9361d0 commit 26909ac

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

Configs/.local/lib/hyde/volumecontrol.sh

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,13 @@ change_volume() {
8484
[ "${srce}" = "" ] && srce="@DEFAULT_AUDIO_SINK@"
8585
if [ "${isVolumeBoost}" = true ]; then
8686
$use_swayosd && swayosd-client ${mode} "${delta}${step}" --max-volume "${VOLUME_BOOST_LIMIT:-150}" && exit 0
87+
# Convert percentage limit to decimal (150% -> 1.5)
88+
boost_limit_decimal=$(awk -v limit="${VOLUME_BOOST_LIMIT:-150}" 'BEGIN {print limit/100}')
89+
wpctl set-volume -l "${boost_limit_decimal}" "${srce}" "${step}%${delta}"
8790
else
8891
$use_swayosd && swayosd-client ${mode} "${delta}${step}" && exit 0
92+
wpctl set-volume -l 1.0 "${srce}" "${step}%${delta}"
8993
fi
90-
wpctl set-volume "${srce}" "${step}%${delta}"
9194
vol=$(wpctl get-volume "${srce}" | awk '{print $2 * 100}')
9295
else
9396
if [ "${isVolumeBoost}" = true ]; then
@@ -174,21 +177,29 @@ select_output() {
174177
get_default_sink() {
175178
local default_sink
176179
if [[ "${use_pipewire}" == true ]]; then
177-
default_sink=$(pw-dump | jq -r '[.[] | select(.info?.props?."media.class" == "Audio/Sink")] | min_by(.info.props."priority.session" // 9999) | .info.props."node.description"')
180+
# More reliable method to get the actual default sink
181+
default_sink=$(wpctl inspect @DEFAULT_AUDIO_SINK@ | grep -oP 'node.description = "\K[^"]+' | head -1)
182+
# Fallback method if above fails
183+
if [ -z "$default_sink" ]; then
184+
default_sink=$(pw-dump | jq -r '[.[] | select(.info?.props?."media.class" == "Audio/Sink")] | min_by(.info.props."priority.session" // 9999) | .info.props."node.description"')
185+
fi
178186
else
179187
default_sink=$(pamixer --get-default-sink | awk -F '"' 'END{print $(NF - 1)}')
180188
fi
181-
echo ${default_sink}
189+
echo "${default_sink}"
182190
}
183191

184192
get_default_source() {
185193
local default_source
186194
if [[ "${use_pipewire}" == true ]]; then
187-
default_source=$(pw-dump | jq -r '[.[] | select(.info?.props?."media.class" == "Audio/Source")] | min_by(.info.props."priority.session" // 9999) | .info.props."node.description"')
195+
default_source=$(wpctl inspect @DEFAULT_AUDIO_SOURCE@ | grep -oP 'node.description = "\K[^"]+' | head -1)
196+
if [ -z "$default_source" ]; then
197+
default_source=$(pw-dump | jq -r '[.[] | select(.info?.props?."media.class" == "Audio/Source")] | min_by(.info.props."priority.session" // 9999) | .info.props."node.description"')
198+
fi
188199
else
189200
default_source=$(pamixer --list-sources | awk -F '"' 'END {print $(NF - 1)}')
190201
fi
191-
echo ${default_source}
202+
echo "${default_source}"
192203
}
193204

194205
toggle_output() {
@@ -210,7 +221,7 @@ icodir="${iconsDir}/Wallbash-Icon/media"
210221
step=${VOLUME_STEPS:-5}
211222

212223
# Detect pipewire
213-
if pactl info | grep -q "PipeWire"; then
224+
if pactl info | grep -q "PipeWire" || ${VOLUME_PIPEWIRE_ENABLE} == true ; then
214225
use_pipewire=true
215226
else
216227
use_pipewire=false

0 commit comments

Comments
 (0)