Thanks for that explanation, Col, that was useful. I had found out about xprop but hadn't noticed the differences between the working X session and the non-working SSH session and I never knew you could set PULSE_SERVER as an environment variable so that's all useful stuff. Both sessions on the same box and both sessions logged on as the same user. I guess the difference is that the X session login has its own root window where as the SSH one uses the root window of the SSH client. In the SSH session, "xprop -root | grep PULSE" returns a value for PULSE_SERVER: PULSE_SERVER(STRING) = "{jl-vaio}unix:/tmp/pulse-john/native tcp:jl-vaio.lan:4713 tcp6:jl-vaio.lan:4713" In the X session (the one that audio works from), xprop returns nothing at all: john at vzopenbox_dev:~$ xprop -root | grep PULSE john at vzopenbox_dev:~$ I HAVE IT WORKING NOW!!!! I tracked the problem down to the fact that the xprop "PULSE_SERVER" references the server by host name (jl-vaio and jl-vaio.lan in the above output). These host names were unknown to the client - I fixed it by putting them into /etc/hosts. Without the PULSE_SERVER info, I presume apps like audacious (or vlc which I've also tried) successfully find a pulseaudio server on the network (and this does not depend on host names) ? Can I make the SSH one do it the same way ? By this I think I mean how can I make it ignore the values returned by xprop ? I would rather not have to rely on host names. Incidentally, I don't have /etc/xdg/autostart at all and I don't have a pulseaudio daemon on the machine that I'm running Audacious on but this does not stop it working in the X session. It is definitely playing via the Pulseaudio server as I can see the session on the manager.