Como puede leer, por ejemplo aquí , logind, que es parte de systemd, puede establecer permisos para algunos dispositivos para sesiones de usuario. También hay un video que muestra cómo funciona este tipo de comportamiento en la práctica. En resumen, si comienza, digamos, amarok, y reproduce alguna canción, escuchará el sonido hasta que cambie a otro usuario o TTY donde solo tenga el mensaje de inicio de sesión. Eso es porque la sesión activa se volvió inactiva.
Sé que simplemente puede agregar un usuario (o usuarios) a un grupo específico, en este caso "audio", y eso "solucionará" este problema, pero me pregunto si hay otra solución. Lo que realmente quiero es establecer algunos permisos para el proceso para que pueda usar la tarjeta de sonido todo el tiempo, incluso cuando todos los usuarios tienen sus sesiones bloqueadas.
¿Es eso posible? Lo pregunto porque a menudo escucho la música y realmente no necesito que mi monitor esté encendido la mayor parte del tiempo, así que solo bloqueo la pantalla. Pero cuando bloqueo la pantalla, la sesión activa se vuelve inactiva y amarok deja de reproducirse. Y sí, la pantalla debe estar bloqueada, y no solo apagada.
EDITAR:
No creo que importe qué distribución estoy usando porque si hay systemd a bordo, sería exactamente el mismo problema. De todos modos, estoy usando debian sid, pero algunos paquetes como systemd, udev (y algunas dependencias) son de la rama experimental, y ahora es la versión 219-9.
nohup program_x & ; disown
podría ayudar. O usando la pantallaloginctl enable-linger
para la cuenta?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.
eso no se refiere a una sesión de usuario inactiva porquesystemd --user
está presente todo el tiempo.Respuestas:
No estoy seguro de qué versión / sabor de Linux está utilizando, pero parece que las ACL para dispositivos de sonido están controladas por ConsoleKit a través de las reglas de udev. En mi host Debian, veo algo como a continuación en /lib/udev/rules.d/70-udev-acl.rules
Jugaría sin etiquetar esto, por lo que consolekit no agregará dispositivos de sonido a su base de datos y no administrará ACL en dispositivos de sonido
fuente
audio group
el binario de amarok, y los permisos son los siguientes:-rwxr-sr-x
pero cuando intento iniciar amarok como usuario habitual,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"
Déjame decirte que sé poco sobre audio en el escritorio de Linux. Mea Culpa si esto no ayuda.
Establecería los permisos de grupo del dispositivo de audio:
al grupo en el que se ejecuta amarok. Use systemd para forzar a amarok a ejecutarse en ese grupo. Primero copie el archivo amarok systemd a / etc / systemd / user / y modifíquelo:
(eso es una modificación, no todo el archivo).
Pero puede haber una respuesta más "sofisticada" debido a las múltiples capas que son el sistema de audio Linux actual.
fuente
chgrp audio
: todos los dispositivos en / dev / snd / ya tienen elaudio
grupo, pero esto no debería importar cuando usa pulseaudio, y ese es el caso. Cuando se trata del servicio de systemd, lo probé, pero recibí el siguiente error:Failed at step GROUP spawning /usr/bin/amarok: Operation not permitted. amarok.service: main process exited, code=exited, status=216/GROUP
y no creo que pueda cambiar estos grupos como usuario habitual. Tengo otro servicio que requiere un cambio de grupo, pero es un demonio de sistema normal y funciona bien. `¿Qué hay de ejecutar el reproductor en vnc framebuffer? En menta 17 ...
Usaría VNC para ver el escritorio como se describe en https://en.wikipedia.org/wiki/Xvfb
fuente
Usage scenarios
enlace en el wiki, y no creo que ninguno de esos se aplique aquí. El proceso (amarok) solo necesita algunos permisos, y no tengo idea de cómo configurarlos, si eso es posible.Pulseaudio se inicia mediante el inicio automático xdg, que se puede encontrar en
~/.config/autostart/
. Hay un archivo llamadopulseaudio.desktop
, y en ese archivo he cambiado laexec
línea predeterminada a esta:Cuando inicio sesión en el sistema, el proceso de pulseaudio se ve así:
Y ahora puedo escuchar la música todo el tiempo. Creo que esta es la solución que estaba buscando.
fuente