How to get sound in a separate X server in Ubuntu 11.04 or later?

I configured my Ubuntu system so that I'm able to start any application in a separate X server. Running games or for example XBMC in a separate X server has some major advantages.

The problem however, is that when you switch to the second X server (Ctrl+Alt+F8), you don't hear any sound. Strangely, when switching back to the desktop (Ctrl+Alt+F7) you can suddenly hear the sound from the second X server. This means that the sound is working, but you just can't hear it while you're in the second X server.

In older versions of Ubuntu (e.g. Ubuntu 10.10), there is a command (ck-launch-session) which you could run in the second X server and the sound would work. Unfortunately, this command no longer has that effect in Ubuntu 11.04 and later. This is the command I would use to launch XBMC in a separate X server:

xinit /usr/bin/ck-launch-session /usr/bin/xbmc -- :1

How can I enable sound when I'm in a second X server in Ubuntu 11.04 or later?

Related bug report: 366404


When I did that kind of thing, I had to be part of the "audio" group. That way the audio from every screen could be heard. One problem: switching screens does not change the audio outputted. If I had an instance of KDE running on one screen and playing music with Amarok, I would be able to hear it on all screens.

If you (like me) don't know how to add a user to a group through the command prompt, just install "kuser" in Synaptic or the software centre or type sudo apt-get install kuser in the terminal.

I seem to remember having some problems starting it as root with the default launcher. If it gives you an error saying it cannot access a file, it generally isn't a problem, just make sure you are using the program as root. If it just tells you you need to be root, close the window, press ALT+F2, then type gksudo kuser. The computer will ask for your password, then Kuser will load correctly.


Try to make your pulse-audio credentials known on the second x-server by using pax11publish -D :1 -e

(where :1 is the Display number of your second X-Server, normally :0 is the first one, counting upwards)

The application you are running is probably trying to read pulse-attributes from the X11 root windows properties.

Alternatively you could be stuck in major consolekit f*ckup.