Comme vous pouvez le lire, par exemple ici , logind, qui fait partie de systemd, peut définir des autorisations sur certains appareils pour les sessions utilisateur. Il y a aussi une vidéo montrant comment ce type de comportement fonctionne dans la pratique. En bref, si vous commencez, disons, amarok, et que vous jouez une chanson, vous entendrez le son jusqu'à ce que vous passiez à un autre utilisateur ou TTY où vous n'avez que l'invite de connexion. C'est parce que la session active est devenue inactive.
Je sais que vous pouvez simplement ajouter un utilisateur (ou des utilisateurs) à un groupe spécifique, dans ce cas "audio", et cela "résoudra" ce problème, mais je me demande s'il y a une autre solution. Ce que je veux vraiment, c'est définir des autorisations pour le processus afin qu'il puisse utiliser la carte son tout le temps, même lorsque tous les utilisateurs verrouillent leurs sessions.
Est-ce possible? Je demande parce que j'écoute souvent de la musique et que je n'ai pas vraiment besoin que mon moniteur soit allumé la plupart du temps, alors je verrouille simplement l'écran. Mais lorsque je verrouille l'écran, la session active devient inactive et amarok cesse de jouer. Et oui, l'écran doit être verrouillé et non pas simplement éteint.
ÉDITER:
Je ne pense pas que la distribution que j'utilise importe, car s'il y a systemd à bord, ce serait exactement le même problème. Quoi qu'il en soit, j'utilise Debian Sid, mais certains paquets comme systemd, udev (et certaines dépendances) proviennent de la branche expérimentale, et maintenant c'est la version 219-9.
nohup program_x & ; disown
pourrait aider. Ou en utilisant l' écranloginctl enable-linger
le compte?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.
cela ne concerne pas une session utilisateur inactive car ellesystemd --user
est présente tout le temps.Réponses:
Je ne sais pas quelle version / saveur de Linux vous utilisez, mais il semble que les ACL pour les périphériques audio soient contrôlés par ConsoleKit via les règles udev. Sur mon hôte Debian, je vois quelque chose comme ci-dessous dans /lib/udev/rules.d/70-udev-acl.rules
Je jouerais avec cela, donc consolekit n'ajoutera pas de périphériques audio dans sa base de données et ne gèrera pas ACL sur les périphériques audio
la source
audio group
le binaire amarok, et les autorisations sont les suivantes-rwxr-sr-x
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"
Permettez-moi de dire que je connais peu de données audio sur le bureau Linux. Mea Culpa si cela n'aide pas.
Je définirais les autorisations de groupe du périphérique audio:
au groupe dans lequel amarok s'exécute. Utilisez systemd pour forcer amarok à s'exécuter dans ce groupe. Copiez d'abord le fichier amarok systemd dans / etc / systemd / user / et modifiez-le:
(c'est une modification, pas tout le fichier).
Mais il peut y avoir une réponse plus "sophistiquée" en raison des multiples couches qui constituent le système audio Linux actuel.
la source
chgrp audio
- tous les périphériques sous / dev / snd / ont déjà leaudio
groupe, mais cela ne devrait pas avoir d'importance lorsque vous utilisez pulseaudio, et c'est le cas. En ce qui concerne le service de systemd, je l'ai essayé, mais j'ai eu l'erreur suivante:,Failed at step GROUP spawning /usr/bin/amarok: Operation not permitted. amarok.service: main process exited, code=exited, status=216/GROUP
et je ne pense pas pouvoir changer ces groupes en tant qu'utilisateur normal. J'ai un autre service qui nécessite un changement de groupe, mais c'est un démon système normal, et cela fonctionne très bien. `Que diriez-vous d'exécuter le lecteur dans framebuffer vnc? À la menthe 17 ...
Vous utiliseriez VNC pour afficher le bureau comme décrit dans https://en.wikipedia.org/wiki/Xvfb
la source
Usage scenarios
dans le lien wiki, et je ne pense pas que cela s'applique ici. Le processus (amarok) a juste besoin de quelques autorisations, et je n'ai aucune idée de comment les définir, si c'est même possible.Pulseaudio est démarré via xdg autostart, qui se trouve sous
~/.config/autostart/
. Il y a un fichier appelépulseaudio.desktop
, et dans ce fichier, j'ai changé laexec
ligne par défaut en celle-ci:Lorsque je me connecte au système, le processus pulseaudio ressemble à ceci:
Et maintenant, je peux écouter de la musique tout le temps. Je pense que c'est la solution que je cherchais.
la source