Como evitar o som mudo ao trocar de usuário?

4

Muitas vezes tenho duas sessões do KDE em execução como dois usuários diferentes. Quando alterno entre elas (por exemplo, Ctrl + Alt + F8), a música que está sendo reproduzida em uma das contas é desativada na outra conta. O mesmo acontece quando mudo para um terminal virtual (Ctrl + Alt + F1).

Até onde eu sei, isso é proposital e faz sentido para vários usuários humanos, mas é irritante na minha configuração.

Como posso manter a música audível sempre que mudo para outra sessão do KDE ou um terminal virtual?

Estou usando o KDE Neon 5 com base no Ubuntu 16.04 LTS (Xenial Xerus) com o KDE 5.36.0 e o Pulseaudio 8.0.

    
por problemofficer 29.07.2017 / 17:08

2 respostas

2

Solução

  1. Adicione todos os usuários que devem poder reproduzir no grupo pulse-access

    # adduser problemofficer pulse-access

  2. Crie /etc/systemd/system/pulseaudio.service com o seguinte conteúdo:

    [Service]
    Type=simple
    PIDFile=/var/run/pulse/pid
    ExecStart=/usr/bin/pulseaudio --daemonize=yes --system=yes --disallow-module-loading=yes --disallow-exit=yes
    
    [Install]
    WantedBy=multi-user.target
    
  3. Habilite esse novo serviço systemd para que ele seja iniciado na inicialização: # systemctl enable pulseaudio

  4. Esteja ciente de que esta configuração é

    • menos seguro (por exemplo, outros usuários podem ouvir seu microfone)
    • A saída de som
    • não será mais trocada automaticamente de e para fones de ouvido e
    • pode impedir que o Bluetooth funcione. Veja também a seção Advertência abaixo.
  5. Reinicializar

Causa

A razão pela qual o som gira é que o Pulseaudio é iniciado em cada login com privilégios de usuários e o sistema¹ não permite que outros usuários escutem o áudio de outros usuários.

Antecedentes da Solução

Pulseaudio

Para resolver este problema, o Pulseaudio deve ser iniciado com privilégios de root, para que seja executado como um daemon do sistema, do qual existe apenas para todos os usuários. Todos se conectarão a essa instância e poderão reproduzir e ouvir tudo o que os outros usuários reproduzirem ou gravarem.

O Pulseaudio não funcionará como root o tempo todo, mas vai cair esses privilégios e assumir o usuário pulse .

De man pulseaudio

User pulse, group pulse: if PulseAudio is running as a system daemon (see --system above) and is started as root the daemon will drop privileges and become a normal user process using this user and group. If PulseAudio is running as a user daemon this user and group has no meaning.

Note que "usuário daemon" não é o mesmo que "sistema deamon". O primeiro é como o Pulseaudio correu antes, o último é como ele será executado se as alterações forem aplicadas.

Para poder se conectar ao serviço do sistema Pulseaudio, você precisa ser um membro do grupo pulse-access .

Novamente em man pulseaudio

Group pulse-access: if PulseAudio is running as a system daemon (see --system above) access is granted to members of this group when they connect via AF_UNIX sockets. If PulseAudio is running as a user daemon this group has no meaning.

Serviço Systemd

Como um trabalho rápido, seria possível simplesmente matar todas as instâncias do "daemon de usuário" do Pulseaudio e então executar /usr/bin/pulseaudio --system=yes . Isso iniciaria o Pulseaudio sem que ele se tornasse um daemon e de uma maneira mais insegura, mas poderia ser útil para uma verificação rápida de prova de conceito.

Para tornar isso persistente e para que o daemon do Pulseaudio inicie automaticamente na inicialização, ele precisa ser adicionado como um serviço systemd. Isto é o que o arquivo /etc/systemd/system/pulseaudio.service é para.

O Pulseaudio não iniciará um daemon de usuário² quando já encontrar um daemon do sistema, é por isso que essa solução funciona.

Advertência

A documentação oficial do Pulseaudio avisos contra o uso do Pulseaudio como um daemon do sistema . Alguns dos problemas mencionados são:

  • ...one especially problematic thing from security point of view is module loading. Anyone who has access can load and unload modules. Module loading can be disabled, but then bluetooth and alsa hotplug functionality doesn't work...

(Isso significa que quando você plug-in fones de ouvido a saída de som não muda automaticamente de alto-falantes para fones de ouvido. O inverso também é verdade quando você remover os fones de ouvido. Ambos têm que ser feito manualmente.)

  • ...much higher memory usage and CPU load in system mode...

    (Pessoalmente eu não notei nenhuma mudança na carga embora.)

  • ...all users that have access to the server can sniff into each others audio streams, listen to their mikes, and so on...

  • ...you also lose a lot of further functionality, like the bridging to jack...

E, possivelmente, outras coisas que eu não entendo e, portanto, não me senti valeram a pena, incluindo aqui.

Nota sobre a resposta da empresa: : nenhuma das etapas descritas em sua resposta foi necessária para essa solução.

Recursos

¹ Se alguém puder explicar isso em detalhes, eu ficaria muito grato.

² Suposição [citação requerida]

    
por 31.07.2017 / 19:44
0

De link :

Este é um recurso "pulseaudio".

Edite o /etc/default/pulseaudio

Alterar PULSEAUDIO_SYSTEM_START=0 para   PULSEAUDIO_SYSTEM_START=1

Dessa forma, o pulseaudio é iniciado no modo de sistema.

Do arquivo /etc/default/pulseaudio :

# Start the PulseAudio sound server in system mode.
# (enables the pulseaudio init script)
# System mode is not the recommended way to run PulseAudio as it has some
# limitations (such as no shared memory access) and could potentially allow
# users to disconnect or redirect each others audio streams. The
# recommend way to run PulseAudio is as a per-session daemon. For GNOME
# sessions you can install pulseaudio-esound-compat and GNOME will
# automatically start PulseAudio on login (if ESD is enabled in
# System->Preferences->Sound). For other sessions, you can simply start
# PulseAudio with "pulseaudio --daemonize".
# 0 = don't start, 1 = start

A maneira mais fácil de aplicar a alteração é garantir que o pulseaudio seja iniciado com a opção --daemonize e reiniciar o sistema.

Outra opção é remover o pulseaudio completamente e usar o alsa, minha opção preferida, pessoalmente ...

    
por 29.07.2017 / 17:38