Skip to content

Commit f6eb5ae

Browse files
committed
Resolve through EasyEffects to its configured output device
The sink-input scan misses EasyEffects because it forwards through direct PipeWire node links that never appear as PulseAudio streams. Volume keys and the audio panel then end up adjusting the virtual easyeffects_sink: the OSD moves while loudness stays put -- an autogain or limiter in the chain normalizes the change away. EasyEffects persists its configured output device in easyeffectsrc, so read the physical sink from there when the stream scan finds nothing. The device is validated against the live sink list, and anything unexpected falls through to the existing behavior.
1 parent 83881e9 commit f6eb5ae

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

bin/omarchy-audio-output-sink

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,19 @@ if [[ -n $downstream ]]; then
5050
fi
5151
fi
5252

53+
# EasyEffects can forward to its output device through direct PipeWire node
54+
# links, which never appear as PulseAudio sink-inputs at all -- and those links
55+
# only exist while audio flows. Its configured output device is persisted in
56+
# easyeffectsrc, so read the physical sink from there.
57+
if [[ $sink == easyeffects_sink ]]; then
58+
ee_rc="${XDG_CONFIG_HOME:-$HOME/.config}/easyeffects/db/easyeffectsrc"
59+
ee_device="$(awk -F= '/^outputDevice=/ {print $2; exit}' "$ee_rc" 2>/dev/null)"
60+
if [[ -n $ee_device ]] && pactl list sinks short 2>/dev/null | awk '{print $2}' | grep -qxF "$ee_device"; then
61+
printf '%s\n' "$ee_device"
62+
exit 0
63+
fi
64+
fi
65+
5366
# Nothing resolvable downstream -- the DSP sink may simply be idle and unlinked.
5467
# Fall back to the sink itself so callers still have something to act on.
5568
printf '%s\n' "$sink"

0 commit comments

Comments
 (0)