Making PulseAudio 10 work with X Windows and Firejail

I was unable to find much information about this issue so it’s either somewhat obscure or I’m terrible at searching for things. Probably both.

Background

I originally ran into this problem when trying to run Firefox in Firejail using the standard Firejail profile for Firefox. Firefox ran fine, except there was no audio. I found that this was a known issue documented here, but unfortunately none of the suggested fixes had any effect. The page states that newer versions of PulseAudio do not exhibit that issue, so that is not really surprising.

I did some searching and found others with related issues (see the related links at the end of this post), but no solutions matched my problem. Based on some of those discussions I tried to run speaker-test with Firejail (both with and without --noprofile), but I received a “connection refused” message in both cases. After some experimentation I found that if I ran speaker-test in Firejail after booting up, but before starting X Windows, it worked. This was the case even if I first used an audio program in the terminal (e.g. a music player) before attempting to run a program with Firejail.

Extra background – The system in question runs Slackware Linux (-current) with PulseAudio 10, starts up into runlevel 3 and uses startx to load X Windows.

Solution

I was able to resolve the issue by adding the following to my .xinitrc before starting the window manager. It starts PulseAudio via the start-pulseaudio-x11 program, which (according to the man page) adds access credentials to the PulseAudio server to the X11 root window and registers it in the X11 session manager.

pulseaudio --kill
start-pulseaudio-x11

I doubt this is an issue for those that start their system using a graphical display manager, although I have not tested that.

Possibly Useful PulseAudio Links