Как вы можете прочитать, например, здесь , logind, являющийся частью systemd, может устанавливать разрешения для некоторых устройств для пользовательских сеансов. Также есть видео, показывающее, как такое поведение работает на практике. Короче говоря, если вы запускаете, скажем, amarok, и вы проигрываете какую-то песню, вы будете слышать звук, пока не переключитесь на другого пользователя или TTY, где у вас есть только приглашение для входа. Это потому, что активный сеанс стал неактивным.
Я знаю, что вы можете просто добавить пользователя (или пользователей) в определенную группу, в данном случае «аудио», и это «решит» эту проблему, но мне интересно, есть ли другое решение. Что я действительно хочу, так это установить некоторые разрешения для процесса, чтобы он мог использовать звуковую карту все время, даже когда все пользователи заблокировали свои сеансы.
Это возможно? Я спрашиваю, потому что я часто слушаю музыку, и мне не нужно, чтобы мой монитор был включен большую часть времени, поэтому я просто блокирую экран. Но когда я блокирую экран, активный сеанс становится неактивным, и amarok перестает играть. И да, экран должен быть заблокирован, а не просто выключен.
РЕДАКТИРОВАТЬ:
Я не думаю, что имеет значение, какой дистрибутив я использую, потому что если на борту есть systemd, это будет точно такая же проблема. В любом случае, я использую sid Debian, но некоторые пакеты, такие как systemd, udev (и некоторые зависимости) из экспериментальной ветки, и теперь это версия 219-9.
nohup program_x & ; disown
может помочь. Или используя экранloginctl enable-linger
для учетной записи?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.
это не касается неактивного пользовательского сеанса, потому чтоsystemd --user
присутствует постоянно.Ответы:
Я не уверен, какую версию Linux вы используете, но похоже, что списки ACL для звуковых устройств контролируются ConsoleKit через правила udev. На моем хосте Debian я вижу что-то вроде ниже в /lib/udev/rules.d/70-udev-acl.rules
Я бы поиграл с этим, так что consolekit не будет добавлять звуковые устройства в свою базу данных и не будет управлять ACL на звуковых устройствах.
источник
audio group
на двоичный файл amarok, и права доступа следующие:-rwxr-sr-x
но когда я пытаюсь запустить amarok как обычный пользователь, я получаю эту ошибку: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"
Позвольте мне сказать, что я мало знаю об аудио на рабочем столе Linux. Меа Калпа, если это не поможет.
Я бы установил групповые разрешения аудиоустройства:
в группу, в которую входит amarok. Используйте systemd, чтобы заставить amarok работать в этой группе. Сначала скопируйте файл systemd amarok в / etc / systemd / user / и измените его:
(это модификация, а не весь файл).
Но может быть более «изощренный» ответ из-за множества уровней, которые сегодня представляют собой Linux-аудиосистему.
источник
chgrp audio
- все устройства в / dev / snd / уже имеютaudio
группу, но это не должно иметь значения, когда вы используете pulseaudio, и это так. Что касается службы systemd, я попробовал это сделать, но получил следующую ошибку:Failed at step GROUP spawning /usr/bin/amarok: Operation not permitted. amarok.service: main process exited, code=exited, status=216/GROUP
и не думаю, что смогу изменить эти группы как обычный пользователь. У меня есть другой сервис, который требует смены группы, но это обычный системный демон, и он работает просто отлично. `Как насчет запуска плеера в vnc framebuffer? В монетном дворе 17 ...
Вы бы использовали VNC для просмотра рабочего стола, как описано в https://en.wikipedia.org/wiki/Xvfb
источник
Usage scenarios
ссылку в вики, и я не думаю, что что-то из этого применимо здесь. Для процесса (amarok) просто необходимы некоторые разрешения, и я не знаю, как их установить, если это вообще возможно.Pulseaudio запускается через автозапуск xdg, который можно найти в
~/.config/autostart/
. Есть файл с именемpulseaudio.desktop
, и в этом файле я изменилexec
строку по умолчанию на эту:Когда я вхожу в систему, процесс pulseaudio выглядит следующим образом:
И теперь я могу слушать музыку все время. Я думаю, что это решение, которое я искал.
источник