Eu passei muitas horas pesquisando on-line, testando várias configurações e conversando com os desenvolvedores do Pulseaudio. A linha inferior de tudo é que a execução de pulseaudio no modo de usuário normal permitirá que somente a sessão ativa marcada pelo ConsoleKit acesse o hardware de áudio. Como o ConsoleKit atual só pode marcar uma sessão como ativa por vez, isso significa que devemos executar uma instância de pulseaudio em todo o sistema. O lado positivo: cada assento pode ter áudio individual. A desvantagem: TODO o hardware de áudio está disponível para qualquer usuário e pode ser manipulado AT WILL. Esta não é uma situação ideal para um cibercafé ou outro ambiente público em que a segurança é uma preocupação real. Tenha isso em mente ao criar sua política de segurança do site. Pode ser prudente restringir a execução do pavucontrol apenas aos administradores.
Como sempre, faça um backup de todos os seus arquivos de configuração padrão. Se você tiver consertado suas configurações sem fazer backup, poderá recuperar o pacote pulseaudio com o apt-get -d install pulseaudio. Isso fará o download do pacote (para / var / cache / archives / apt) e você poderá extrair o conteúdo para recuperar as configurações padrão. Esteja ciente de que client.conf não está incluído lá.
Para executar o pulseaudio como um daemon do sistema, precisamos editar alguns arquivos.
1.) / etc / default / pulseaudio
PULSEAUDIO_SYSTEM_START=1
2.) /etc/pulse/daemon.conf - Veja man pulse-daemon.conf para mais informação.
daemonize = yes
local-server-type = system
autospawn = no
Também precisamos adicionar usuários ao grupo de acesso por pulsos.
sudo usermod -a -G pulse-access <username>
Agora que todos os usuários podem acessar o hardware de áudio, precisamos selecionar o hardware que cada usuário usará. Isso pode ser feito usando o pavucontrol. Por favor, esteja ciente de que as configurações são armazenadas por usuário e não seguirá o assento. Se os usuários trocarem de lugar, você precisará selecionar novamente o hardware de áudio desejado.
Comentários adicionais sobre o Pulseaudio
Eu esperava que houvesse uma solução mais elegante para obter o trabalho de áudio por estação. Usar um Pulseaudio em todo o sistema em multiterminal tem muitas desvantagens e não é totalmente estável entre as reinicializações. Eu tinha tentado iniciar uma instância de todo o sistema e ter instâncias de usuário conectadas a ele como um servidor via host local. Isso parece não funcionar desde quando o pulseaudio --start é executado pelo daemon.conf.
Sobre o ConsolKit
O problema que vemos quando executamos um pulseaudio normal por usuário é que um assento tem acesso ao hardware e todos os outros têm Saída Fictícia. Isso ocorre porque o ConsoleKit não está totalmente ciente do banco. O CK considera todas as nossas cadeiras como sessões do assento1 e só pode marcar uma sessão como ativa. Este fato pode ser visto executando-se getfacl / dev / snd / *. Ocorreu-me o pensamento de que poderíamos editar a acl dos arquivos / dev / snd / apropriados com base em qual $ DISPLAY um usuário específico está usando. Esta é uma opção que eu não explorei. Por favor, considere contribuir para a causa multiterminal, explorando esta hipótese e editando o documento com suas descobertas.
Filiais Multiterminal para ConsoleKit , GDM-2.3 e GDM-3.x existe, o qual deve prover a funcionalidade de multiterminal automática.
Notas adicionais
1.) Seria sensato também impedir que os usuários carreguem os módulos DISALLOW_MODULE_LOADING = 1.
2.) autospawn = no não é totalmente necessário, como visto no meu arquivo de exemplo. Isso não causa problemas.