Como você pode ler, por exemplo , aqui , o logind, que faz parte do systemd, pode definir permissões para alguns dispositivos para sessões do usuário. Há também um vídeo mostrando como esse tipo de comportamento funciona na prática. Resumindo, se você começar, digamos, amarok, e tocar alguma música, ouvirá o som até mudar para outro usuário ou TTY, onde você terá apenas o prompt de login. Isso ocorre porque a sessão ativa ficou inativa.
Eu sei que você pode simplesmente adicionar um usuário (ou usuários) a um grupo específico, neste caso "audio", e isso 'corrigirá' esse problema, mas estou me perguntando se há outra solução. O que eu realmente quero é definir algumas permissões para o processo para que ele possa usar a placa de som o tempo todo, mesmo quando todos os usuários tiverem suas sessões bloqueadas.
Isso é possível? Estou perguntando, porque muitas vezes ouço a música e realmente não preciso que meu monitor esteja ligado a maior parte do tempo, então apenas bloqueio a tela. Mas quando bloqueio a tela, a sessão ativa fica inativa e o amarok para de tocar. E sim, a tela deve estar bloqueada e não apenas desligada.
EDITAR:
Eu não acho que isso importe qual distro eu estou usando, porque se houver systemd a bordo, seria exatamente o mesmo problema. De qualquer forma, estou usando o debian sid, mas alguns pacotes como systemd, udev (e algumas dependências) são do ramo experimental, e agora é a versão 219-9.
nohup program_x & ; disown
poderia ajudar. Ou usando a telaloginctl enable-linger
a conta?The systemd user instance is started after the first login of a user and killed after the last session of the user is closed. Sometimes it may be useful to start it right after boot, and keep the systemd user instance running after the last session closes, for instance to have some user process running without any open session. Lingering is used to that effect.
Isso não diz respeito a uma sessão de usuário inativo, porquesystemd --user
está presente o tempo todo.Respostas:
Não sei qual versão / sabor do Linux você está usando, mas parece que as ACLs para dispositivos de som são controladas pelo ConsoleKit por meio das regras do udev. No meu host Debian, vejo algo como abaixo em /lib/udev/rules.d/70-udev-acl.rules
Eu gostaria de desmarcar isso, para que o consolekit não adicione dispositivos de som ao banco de dados e não gerencie a ACL em dispositivos de som
fonte
audio group
para o binário amarok, e as permissões são os seguintes:-rwxr-sr-x
, mas quando eu tento iniciar amarok como um usuário regular, eu recebo este erro:QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. unnamed app(24333): KUniqueApplication: Cannot find the D-Bus session server: "Unable to autolaunch when setuid"
Deixe-me dizer que sei pouco sobre áudio no desktop Linux. Mea Culpa, se isso não ajudar.
Eu definiria as permissões de grupo do dispositivo de áudio:
ao grupo em que o amarok executa. Use systemd para forçar a execução do amarok nesse grupo. Primeiro copie o arquivo amarok systemd para / etc / systemd / user / e modifique-o:
(isso é uma modificação, não o arquivo inteiro).
Mas pode haver uma resposta mais "sofisticada" devido às múltiplas camadas que são o sistema de áudio Linux atual.
fonte
chgrp audio
- todos os dispositivos em / dev / snd / já têm oaudio
grupo, mas isso não deve importar quando você usa o pulseaudio, e é esse o caso. Quando se trata do serviço do systemd, tentei, mas recebi o seguinte erro:Failed at step GROUP spawning /usr/bin/amarok: Operation not permitted. amarok.service: main process exited, code=exited, status=216/GROUP
e não acho que possa alterar esses grupos como um usuário comum. Eu tenho outro serviço que requer alteração de grupo, mas é um daemon de sistema normal e funciona muito bem. `Que tal executar o player no vnc framebuffer? Na casa da moeda 17 ...
Você usaria o VNC para exibir a área de trabalho, conforme descrito em https://en.wikipedia.org/wiki/Xvfb
fonte
Usage scenarios
link no wiki e acho que nenhum deles se aplica aqui. O processo (amarok) só precisa de algumas permissões, e eu não tenho idéia de como defini-las, se isso for possível.O Pulseaudio é iniciado via inicialização automática do xdg, que pode ser encontrada em
~/.config/autostart/
. Há um arquivo chamadopulseaudio.desktop
, e nesse arquivo eu mudei aexec
linha padrão para esta:Quando eu entro no sistema, o processo pulseaudio fica assim:
E agora eu sou capaz de ouvir a música o tempo todo. Eu acho que essa é a solução que eu estava procurando.
fonte