System details
Intel Core Ultra 7 155H, Intel Arc Graphics, Omarchy 4.0.3-1 (Lenovo ThinkPad X1 Carbon Gen 12)
What's wrong?
Summary
omarchy-audio-output-sink attempts to resolve virtual/DSP sinks like EasyEffects down to the physical hardware sink so that volume controls (both keyboard shortcuts and the Omarchy shell audio panel slider) act on real speaker loudness rather than altering the level going into the DSP processing chain.
However, the resolution check for EasyEffects in omarchy-audio-output-sink (lines 40–42) searches pactl list sink-inputs for application.name = "EasyEffects":
downstream="$(pactl list sink-inputs 2>/dev/null |
awk -v virt="$sink" '
/^Sink Input #/ {target = ""}
/^[[:space:]]*Sink:/ {target = $2}
/node\.name = / {
name = $0
sub(/.*node\.name = "/, "", name)
sub(/"$/, "", name)
if (index(name, virt) == 1 && target != "") {print target; exit}
}
/application\.name = "EasyEffects"/ {
if (virt == "easyeffects_sink" && target != "") {print target; exit}
}')"
In PipeWire, EasyEffects communicates natively via PipeWire SPA client nodes rather than through the PulseAudio emulation layer (pipewire-pulse). Therefore, application.name = "EasyEffects" never appears in pactl list sink-inputs.
Impact
omarchy-audio-output-sink fails to resolve easyeffects_sink to the physical sink and falls back to returning easyeffects_sink.
- Both
omarchy-audio-output-volume (volume keys) and Panel.qml (volumeSinkProc / Output slider in the shell audio panel) control easyeffects_sink instead of the physical sink.
- Changing
easyeffects_sink volume is largely absorbed or normalized by EasyEffects's limiter/compressor/autogain, resulting in little to no audible volume change when adjusting the slider.
- If the underlying hardware sink is muted or at 0% (e.g. after booting or switching audio profiles), neither the volume keys nor the shell slider can raise or unmute the physical hardware speaker, leaving the system completely silent even while audio players show normal playback.
Steps to Reproduce
- Install and run EasyEffects (
systemctl --user enable --now easyeffects.service), routing output to laptop speakers (alsa_output.*.HiFi__Speaker__sink).
- Run
omarchy-audio-output-sink.
- Notice it outputs
easyeffects_sink instead of resolving to the downstream physical speaker sink (alsa_output.*.HiFi__Speaker__sink).
- Mute the physical hardware speaker (
pactl set-sink-mute <alsa_output_sink> 1) and try raising volume with keyboard volume keys or the Omarchy shell Output slider. Notice the physical speaker remains muted and at 0% volume.
Suggested Fix
When $sink == "easyeffects_sink", resolve the target downstream sink via active PipeWire links (pw-link -l) or EasyEffects configuration:
if [[ $sink == "easyeffects_sink" ]]; then
# Check active PipeWire link
target=$(pw-link -l 2>/dev/null | awk '$1 == "ee_soe_output_level:output_FL" {getline; print $2}' | cut -d: -f1)
if [[ -n $target && $target == alsa_output.* ]]; then
printf '%s\n' "$target"
exit 0
fi
# Fallback to configured output device in easyeffects database
target=$(grep '^outputDevice=' "${XDG_CONFIG_HOME:-$HOME/.config}/easyeffects/db/easyeffectsrc" 2>/dev/null | cut -d= -f2-)
if [[ -n $target && $target == alsa_output.* ]]; then
printf '%s\n' "$target"
exit 0
fi
fi
System details
Intel Core Ultra 7 155H, Intel Arc Graphics, Omarchy 4.0.3-1 (Lenovo ThinkPad X1 Carbon Gen 12)
What's wrong?
Summary
omarchy-audio-output-sinkattempts to resolve virtual/DSP sinks like EasyEffects down to the physical hardware sink so that volume controls (both keyboard shortcuts and the Omarchy shell audio panel slider) act on real speaker loudness rather than altering the level going into the DSP processing chain.However, the resolution check for EasyEffects in
omarchy-audio-output-sink(lines 40–42) searchespactl list sink-inputsforapplication.name = "EasyEffects":In PipeWire, EasyEffects communicates natively via PipeWire SPA client nodes rather than through the PulseAudio emulation layer (
pipewire-pulse). Therefore,application.name = "EasyEffects"never appears inpactl list sink-inputs.Impact
omarchy-audio-output-sinkfails to resolveeasyeffects_sinkto the physical sink and falls back to returningeasyeffects_sink.omarchy-audio-output-volume(volume keys) andPanel.qml(volumeSinkProc/ Output slider in the shell audio panel) controleasyeffects_sinkinstead of the physical sink.easyeffects_sinkvolume is largely absorbed or normalized by EasyEffects's limiter/compressor/autogain, resulting in little to no audible volume change when adjusting the slider.Steps to Reproduce
systemctl --user enable --now easyeffects.service), routing output to laptop speakers (alsa_output.*.HiFi__Speaker__sink).omarchy-audio-output-sink.easyeffects_sinkinstead of resolving to the downstream physical speaker sink (alsa_output.*.HiFi__Speaker__sink).pactl set-sink-mute <alsa_output_sink> 1) and try raising volume with keyboard volume keys or the Omarchy shell Output slider. Notice the physical speaker remains muted and at 0% volume.Suggested Fix
When
$sink == "easyeffects_sink", resolve the target downstream sink via active PipeWire links (pw-link -l) or EasyEffects configuration: