Comment 26 for bug 627195

Unity is not the problem here.
Indicator-session should actually pass the activation timestamp to the player when raising it.

However, the problem is that IndicatorSound is just calling the Raise() method of the MPRIS dbus interface that most of the players are implementing. See:

As you see this method is not taking any parameter, while it should actually take the timestamp of the click event (the one we get into indicator-sound's MetadataMenuitem::handle_event), in order to work with the Focus Stealing Prevention mechanism that the windows managers are using nowadays (both compiz and mutter in fact).

I've opened a bug for the MPRIS specification at and I encourage you to complete it.
However this process can be long and until then the only way we have is to patch our players.

Basically what we need to do is *temporary* using the workaround shown in the bug linked below to bypass the focus stealing prevention when the Raise method is called on them: