История изменений
Исправление intelfx, (текущая версия) :
А в чём, собственно, проблема?
Вариантов глобально два:
- запускать через общесистемный инстанс systemd (PID 1,
/etc/systemd/system
,systemctl
) с помощью юнита вида[Service] User=... Group=... ExecStart=... [Install] WantedBy=multi-user.target
- запускать через per-user systemd (
$HOME/.config/systemd/user
,systemctl --user
) с помощью юнита вида[Service] ExecStart=... [Install] WantedBy=default.target
Дальше начинаются тонкости. Во-первых, по умолчанию пользовательский инстанс systemd запускается с первым логином пользователя и завершается с последним разлогином (соответственно, запускаются и прибиваются все запущенные из-под него демоны). Чтобы он запускался при старте системы и жил до шатдауна, нужно сделать loginctl enable-linger <имя-пользователя>
.
Во-вторых, если ты используешь PulseAudio, нужно сделать ещё некоторые вещи и учесть, что:
- По умолчанию PulseAudio запускается для каждого пользователя свой;
- Во всех дистрибутивах, кроме арча, он запускается вместе с иксами через xinitrc, а в арче — через пользовательский инстанс systemd;
- Если для какого-то пользователя нет ни одной активной сессии (== текущего логина), PulseAudio не будет ничего воспроизводить, если только пользователь не добавлен в группу
audio
.
Следствие из первого пункта: вероятно, имеет смысл вручную перенастроить систему на запуск единой копии PulseAudio (systemwide mode).
Следствие из второго пункта: mpd нужно запускать строго после пульсы, т. е. в арче для запуска mpd нужно использовать systemd --user
, а не в арче — только PulseAudio systemwide mode. Иначе пульса запустится автоматически с mpd (autospawn), но процесс пульсы окажется в той же цгруппе, что и mpd, и когда ты захочешь (например) перезапустить mpd — у тебя внезапно отвалится звук.
Следствие из третьего пункта: тебе нужно добавить юзера в группу audio
или использовать PulseAudio systemwide mode.
Исходная версия intelfx, :
А в чём, собственно, проблема?
Вариантов глобально два:
- запускать через общесистемный инстанс systemd (PID 1,
/etc/systemd/system
,systemctl
) с помощью юнита вида[Service] User=... Group=... ExecStart=... [Install] WantedBy=multi-user.target
- запускать через per-user systemd (
$HOME/.config/systemd/user
,systemctl --user
) с помощью юнита вида[Service] ExecStart=... [Install] WantedBy=default.target
Дальше начинаются тонкости. Во-первых, по умолчанию пользовательский инстанс systemd запускается с первым логином пользователя и завершается с последним разлогином (соответственно, запускаются и прибиваются все запущенные из-под него демоны). Чтобы он запускался при старте системы и жил до шатдауна, нужно сделать loginctl enable-linger <имя-пользователя>
.
Во-вторых, если ты используешь PulseAudio, нужно сделать ещё некоторые вещи и учесть, что:
[*] По умолчанию PulseAudio запускается для каждого пользователя свой;
[*] Во всех дистрибутивах, кроме арча, он запускается вместе с иксами через xinitrc, а в арче -- через пользовательский инстанс systemd;
[*] Если для какого-то пользователя нет ни одной активной сессии (== текущего логина), PulseAudio не будет ничего воспроизводить, если только пользователь не добавлен в группу audio
.
Следствие из первого пункта: вероятно, имеет смысл вручную перенастроить систему на запуск единой копии PulseAudio (systemwide mode).
Следствие из второго пункта: mpd нужно запускать строго после пульсы, т. е. в арче для запуска mpd нужно использовать systemd --user
, а не в арче — только PulseAudio systemwide mode. Иначе пульса запустится автоматически с mpd (autospawn), но процесс пульсы окажется в той же цгруппе, что и mpd, и когда ты захочешь (например) перезапустить mpd — у тебя внезапно отвалится звук.
Следствие из третьего пункта: тебе нужно добавить юзера в группу audio
или использовать PulseAudio systemwide mode.