I’ve tried setting up pulseaudio before to stream music from my laptop to my desktop without much success. I attribute my past failures to my lack of understanding of the client/server model that pulseaudio follows. Trust me when I say it’s important to learn the necessery terminology to setup pulseaudio, you’ll end up quite confused otherwise!
server - A pulseaudio server or daemon accepts sources and outputs audio
on a sinksource - Any process that outputs audio, for example chromium playing music
from hypem.com. In the client/server relationship a source is a client.sink - A soundcard, a remote pulseaudio server (with soundcards) and some
other niche things (think /dev/null, visualisers).This diagram represents the setup we’re creating:
Add the following lines to /etc/pulse/default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
load-module module-zeroconf-publish
The first line sets up a TCP server for pulseaudio allowing remote sound sources
to be utilized (clients can be anonymous as well). The second line sets up zerconf publishing by the avahi
daemon (enable with systemctl enable avahi-daemon && systemctl start
avahi-daemon on Arch), the clients that will attach to the server will also
need the avahi deamon running to be informed of the pulseaudio server you’ve
just set up.
Add the following lines to /etc/pulse/default.pa
load-module module-zeroconf-discover
Understandably this module searches out for other pulseaudio servers on the LAN.
load-module module-zeroconf-discover
Restart pulseaudio and install pasystray or padevchooser to set your sink
(desktop) on the client/source (laptop).
| [Pulseaudio examples | Arch Wiki](https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network) |