audio: PipeWire es el servidor de la distro (decisión del usuario) — gvc conecta
Cierra una pregunta que estaba explícitamente abierta en varias recetas, y que es la razón por la que `pulseaudio` se había construido con `-Ddaemon=false`: sólo el cliente, para que gvc hablara el protocolo sin cerrar la decisión de prestado. **Los dos conviven y por eso la decisión no rompe nada**: pipewire va con `-Dlibpulse=enabled` ⇒ `pipewire-pulse`, un servidor que habla el protocolo de PulseAudio. gnome-shell usa libpulse sin enterarse de qué hay del otro lado. No hubo que tocar una línea del cliente. == gnome-qemu :: socket pipewire-0 OK == gnome-qemu :: socket pulse/native OK — gvc va a poder conectar Gvc-DEBUG: Updating client: index=32 name='pipewire' Gvc-DEBUG: Updating sink: index=33 name='auto_null' description='Dummy Output' El `Failed to connect context: Connection refused` desapareció. El sink es auto_null, que es la respuesta honesta: la VM no tiene tarjeta de sonido. **⚠ Falta wireplumber** (gestor de sesión, Lua + su cierre). Sin él PipeWire acepta clientes pero NO enumera ni enruta dispositivos. «El shell conecta» ≠ «hay sonido», y el log de arriba es justo el caso donde confundirlos sería fácil. Queda escrito en la receta y en el runbook. GOTCHA MEDIDO: ya existía incoming-kde/pipewire.toml sellada y NO se puede reusar hidratándola acá — los dos cierres traen glib y **no son la misma glib**: incoming-kde/glib-shared y incoming-gnome/glib producen libglib-2.0.so.0.8800.1 con bytes distintos (verificado con cmp) y comparten 370 rutas. Proyectar las dos deja que una gane por orden de proyección ⇒ dos registros de GType en un proceso, el cuadro que costó el episodio de colord. De ahí la copia en la cola GNOME (glib-shared→glib, dbus→dbus-shared, pcre2-shared→pcre2), que sí re-construye. Lo que FUE gratis: alsa-lib, cuya única dep es pkgconf y resuelve al catálogo PADRE ⇒ hash idéntico y cache hit (b3:93cae411). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -291,6 +291,37 @@ esperar_nombre() {
|
||||
dump /tmp/busnames.log
|
||||
return 1
|
||||
}
|
||||
# ── AUDIO: PipeWire (decisión del usuario, 2026-07-29) ──────────────────────────────────────────
|
||||
# Van DOS procesos y el orden importa: `pipewire` es el servidor, y `pipewire-pulse` es el puente que
|
||||
# habla el protocolo de PulseAudio contra él. gnome-shell usa libpulse (gvc), así que lo que necesita
|
||||
# es el SEGUNDO; sin el primero, el segundo no tiene con quién hablar.
|
||||
#
|
||||
# Los dos son servicios de USUARIO: su socket vive en $XDG_RUNTIME_DIR, que ya está creado más arriba.
|
||||
#
|
||||
# ⚠ Sin gestor de sesión (wireplumber todavía no está autorado): esto hace que el shell CONECTE y deje
|
||||
# de tirar `Gvc-WARNING: Failed to connect context: Connection refused`, pero NO enumera ni enruta
|
||||
# dispositivos. «El shell conecta» no es «hay sonido», y conviene no confundirlos.
|
||||
if [ -x /usr/bin/pipewire ]; then
|
||||
/usr/bin/pipewire >/tmp/pipewire.log 2>&1 &
|
||||
say "pipewire lanzado (pid $!)"
|
||||
i=0; while [ $i -lt 20 ] && [ ! -S "$XDG_RUNTIME_DIR/pipewire-0" ]; do i=$((i+1)); sleep 0.25; done
|
||||
if [ -S "$XDG_RUNTIME_DIR/pipewire-0" ]; then
|
||||
say "socket pipewire-0 OK"
|
||||
/usr/bin/pipewire-pulse >/tmp/pipewire-pulse.log 2>&1 &
|
||||
say "pipewire-pulse lanzado (pid $!)"
|
||||
i=0; while [ $i -lt 20 ] && [ ! -S "$XDG_RUNTIME_DIR/pulse/native" ]; do i=$((i+1)); sleep 0.25; done
|
||||
if [ -S "$XDG_RUNTIME_DIR/pulse/native" ]; then
|
||||
say "socket pulse/native OK — gvc va a poder conectar"
|
||||
else
|
||||
say "!! pipewire-pulse no creó pulse/native:"; dump /tmp/pipewire-pulse.log
|
||||
fi
|
||||
else
|
||||
say "!! pipewire no creó su socket:"; dump /tmp/pipewire.log
|
||||
fi
|
||||
else
|
||||
say "!! sin /usr/bin/pipewire — el shell va a avisar 'Failed to connect context'"
|
||||
fi
|
||||
|
||||
esperar_nombre org.freedesktop.login1 /tmp/logind-compat.log
|
||||
esperar_nombre org.freedesktop.PolicyKit1 /tmp/polkit-compat.log
|
||||
esperar_nombre org.freedesktop.Accounts /tmp/accounts-daemon.log
|
||||
|
||||
@@ -51,6 +51,9 @@ else
|
||||
# el escritorio sea usable— los CURSORES. Con el cursor por software (obligatorio en virtio-gpu)
|
||||
# y sin tema, el puntero se mueve invisible. Arrastra hicolor-icon-theme por `Inherits=hicolor`.
|
||||
recipes/incoming-gnome/adwaita-icon-theme.toml
|
||||
# El SERVIDOR de audio (decisión del usuario: PipeWire, no PulseAudio). No es dep de build de
|
||||
# nadie: el shell habla libpulse y `pipewire-pulse` le contesta por el otro lado.
|
||||
recipes/incoming-gnome/pipewire.toml
|
||||
)
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user