audio: capture default sink's monitor, not default source
`pulsesrc` with no `device=` reads PulseAudio's default source — which is the user's microphone, not system audio output. The stream was technically working but the laptop was hearing the desktop's mic (or silence on systems without one) instead of system audio. At host startup, shell out to `pactl get-default-sink` to discover the current default sink, then pass `device=<sink>.monitor` to pulsesrc. Resolving at session-start covers users who switch outputs (speakers vs headset vs HDMI) between sessions. pactl added to the host's required-binary list. Verified cross-machine: audio came through clearly with the prior ~1s latency floor preserved. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ pub fn check_host_binaries(display: DisplayServer) -> Result<()> {
|
||||
if display == DisplayServer::Wayland {
|
||||
require("gst-launch-1.0")?;
|
||||
require("gst-inspect-1.0")?;
|
||||
require("pactl")?;
|
||||
require_gst_element("pipewiresrc")?;
|
||||
require_gst_element("vah264enc")?;
|
||||
require_gst_element("h264parse")?;
|
||||
@@ -61,6 +62,13 @@ fn install_hint_for_bin(bin: &str) -> String {
|
||||
Some("fedora" | "nobara") => "gstreamer1 gstreamer1-plugins-base-tools",
|
||||
_ => "gstreamer + tools",
|
||||
},
|
||||
"pactl" => match distro.as_deref() {
|
||||
Some("arch" | "cachyos" | "manjaro" | "endeavouros") => "libpulse",
|
||||
Some("debian" | "ubuntu" | "pop" | "linuxmint") => "pulseaudio-utils",
|
||||
Some("fedora" | "nobara") => "pulseaudio-utils",
|
||||
Some("opensuse" | "opensuse-tumbleweed" | "opensuse-leap") => "pulseaudio-utils",
|
||||
_ => "pulseaudio-utils (provides `pactl`)",
|
||||
},
|
||||
_ => bin,
|
||||
};
|
||||
install_command(&distro, pkg)
|
||||
|
||||
Reference in New Issue
Block a user