Públic Doncs si, després de fer el petit videojoc on una nau dispara als enemics, resulta que el so no funcionava.
Comença la investigació
He de dir que treballo amb Linux, Debian per a ser exactes, amb l’editor Code::Blocks, la llibreria de programació RayLib i tot en llenguatge C++.
Una vegada feia el build per a executar el codi, resulta que sortia un error per consola on deia que era impossible connectar amb el servidor PulseAudio.
PulseAudio: Unable to connect: Connection refused
El so no funciona. Per tant començo a investigar.
Tinc el que necessito?
El primer que miro és si tinc el servidor Pulse instal·lat i en marxa.
pactl info
Si pactl info et mostra “Server String: /run/user/…/pulse/native”, ja el tens actiu. Sino, s’ha instal·lar i posar en marxa:
# Instal·la el servidor de compatibilitat Pulse per PipeWire
sudo apt update
sudo apt install pipewire pipewire-pulse wireplumber# Habilita i arrenca serveis d’usuari
systemctl –user enable –now pipewire pipewire-pulse wireplumber# Verifica
pactl info
Per sort jo ho tenia tot en marxa i correcte. Però llavors, què estava passant?
Pot ser tema d’usuaris?
Segons amb quin usuari estiguis executant el codi, et deixarà que aquest connecti o no amb el servidor Pulse.
ls -l /run/user/1000/pulse/native
# hauria de ser un socket propietat del teu usuari (srwxr-xr-x …)
Executem aquestes ordres per veure si les variables d’entorn estan correctes:
echo $XDG_RUNTIME_DIR # ha de ser /run/user/…
echo $PULSE_SERVER # idealment buit; si apunta a una altra cosa, desfés-ho
Doncs jo ho tinc tot correcte, i recordo Flatpak
Penso una mica, i recordo haver instal·lat Code::blocs amb Flatpack. I aquí està el problema !!!
Quan instal·les Code::Blocks amb flatpak, quan l’executes aquest no hereta sempre les variables d’entorn del teu terminal, especialment a Debian. Això fa que el procés no trobi el socket de PulseAudio (tot i estar funcionant correctament al teu entorn d’usuari).
Quina és la solució? Doncs anem al menú de Debian > cerqueu Code::Blocks > Premeu botó dret i seleccioneu “Edita l’aplicació” allà et surt els paràmetres a passar al programa, li afegiu:
–socket=pulseaudio
En el meu cas quedaria:
run –branch=stable –arch=x86_64 –socket=pulseaudio –command=codeblocks –file-forwarding org.codeblocks.codeblocks @@ %F @@
I aquí ja puc executar el codi des de Code::Blocks que ja se sent…
Aquest és un espai de treball personal d'un/a estudiant de la Universitat Oberta de Catalunya. Qualsevol contingut publicat en aquest espai és responsabilitat del seu autor/a.