Ubuntu – La lecture audio s’arrête dans Unity lorsque je change d’utilisateur

Ma configuration

Ordinateur portable System 76 Kudu-Pro avec Ubuntu 16.04 LTS que j’ai installé et que je mets à jour régulièrement tous les quelques jours. J’utilise Unity comme bureau principal avec 12 utilisateurs avec lesquels je passe fréquemment pour effectuer des tâches spécifiques et pour l’isolement de sécurité.

Le problème

Je démarre la lecture de la musique, puis change d’utilisateur et la musique s’arrête. Cela se produit même si je passe à localhost, désactive la variable d’environnement DISPLAY, deviens root et joue la musique par une commande (mplayer) de cette session. J’ai rencontré ce problème pour la première fois sur 14.04 LTS, qui était la première version que j’utilisais Unity et était pré-installé sur l’ordinateur portable. lorsque vous redéfinissez l’utilisateur sur le même utilisateur qui a commencé à lire la musique, la musique reprend. cela s’applique également à l’audio lu par le navigateur, comme les vidéos Youtube.

Ma question

Comment puis-je jouer de la musique qui continue à jouer (dans un arrière-plan virtuel?) Lorsque je change d’utilisateur? Est égalementPulseAudioimpliqué dans cela?

Considérations

Si la solution a besoin d’un accès root ou sudo, je peux le faire. Si la solution nécessite une programmation à petite échelle, je peux le faire en C et / ou Python. Je pensais qu’une solution de contournement possible était d’obtenir un périphérique audio USB et j’espère que ce 2ème périphérique audio pourra fonctionner.

Meilleure réponse

  • Exécution de PulseAudio à l’échelle du système

    En exécutant PulseAudio en mode système, tout audio qu’un utilisateur autorisé a démarré sera lu en arrière-plan tant que cet utilisateur est connecté.

    Avant de continuer, veuillez lire ce qui suit pour expliquer pourquoi une exécution à l’échelle du système n’est généralement pas une bonne idée:

    • Quel est le problème avec le mode système?

    Néanmoins, nous pouvons le faire si nous le voulons.Seuls les comptes autorisés pourront alors contrôler le volumeou démarrer une autre instance de sortie audio.

    Préparation du système pour exécuter Pulseaudio en mode système

    Notez toutes les modifications que vous avez apportées pour pouvoir les annuler au cas où vous n’aimeriez pas le résultat (j’ai testé tout cela dans une machine virtuelle).

    1. Désactiver la création automatique de pulseaudio pour l’utilisateur qui contrôlera l’audio

       echo autospawn = no > $HOME/.config/pulse/client.conf
       

      Cela empêche la génération automatique de pulseaudio pour les comptes $ HOME donnés. Les paramètres ici remplaceront les paramètres à l’échelle du système dans /etc/pulse ce qui bien sûr peut être fait alternativement.

    2. Arrêter une instance en cours d’exécution de pulseaudio en mode utilisateur

       pulseaudio -k
       
    3. Préparer les utilisateurs et les groupes nécessaires (au cas où ils n’existeraient pas encore)

       sudo addgroup --system pulse
      sudo adduser --system --ingroup pulse --home /var/run/pulse pulse
      sudo addgroup --system pulse-access
      sudo adduser pulse audio
       
    4. Autoriser les utilisateurs à accéder à l’ensemble du système PulseAudio

       sudo adduser <username> pulse-access
       

      Seuls les utilisateurs ajoutés à pulse-access sera en mesure de contrôler le volume d’un audio en cours de lecture.

    Démarrer pulseaudio en mode système

     sudo pulseaudio --system