Bug 49009 - Не запускать для пользователей, которых нет в группе audio
Summary: Не запускать для пользователей, которых нет в группе audio
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: pipewire (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Yuri N. Sedunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-01-06 16:27 MSK by Антон Мидюков
Modified: 2024-01-06 20:13 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Мидюков 2024-01-06 16:27:08 MSK
Глобальное включение pipewire.service:
# systemctl --global enable pipewire.service

Приводит к тому, что он запускается вообще у всех пользователей, включая root.
Решение проблемы видится мне в том, чтобы запускать его только у тех пользователей, которые состоят в группе audio.
Для этого нужно добавить в pipewire.service в секцию [Unit] строчку:
ConditionGroup=audio
Comment 1 Yuri N. Sedunov 2024-01-06 16:36:54 MSK
(Ответ для Антон Мидюков на комментарий #0)
> Глобальное включение pipewire.service:
> # systemctl --global enable pipewire.service

Зачем --global?
Comment 2 Антон Мидюков 2024-01-06 16:40:33 MSK
(Ответ для Yuri N. Sedunov на комментарий #1)
> (Ответ для Антон Мидюков на комментарий #0)
> > Глобальное включение pipewire.service:
> > # systemctl --global enable pipewire.service
> 
> Зачем --global?

Чтобы у всех пользователей, которые будут созданы в будущем был включен pipewire.
А есть какой-то другой способ включить будущим пользователям?
Comment 3 Yuri N. Sedunov 2024-01-06 16:44:33 MSK
(Ответ для Антон Мидюков на комментарий #2)
> (Ответ для Yuri N. Sedunov на комментарий #1)
> > (Ответ для Антон Мидюков на комментарий #0)
> > > Глобальное включение pipewire.service:
> > > # systemctl --global enable pipewire.service
> > 
> > Зачем --global?
> 
> Чтобы у всех пользователей, которые будут созданы в будущем был включен
> pipewire.
> А есть какой-то другой способ включить будущим пользователям?

У системы есть администратор -- включит, если надо.

И у юзера gdm, включит если надо, чтоб, например, orca работала.

В общем, ты сам напросился нарисовать какой-нибудь развесистый control для pipewire.
Comment 4 Arseny Maslennikov 2024-01-06 17:05:55 MSK
(In reply to Антон Мидюков from comment #0)
> Глобальное включение pipewire.service:
> # systemctl --global enable pipewire.service
> 
> Приводит к тому, что он запускается вообще у всех пользователей, включая
> root.
> Решение проблемы видится мне в том, чтобы запускать его только у тех
> пользователей, которые состоят в группе audio.
> Для этого нужно добавить в pipewire.service в секцию [Unit] строчку:
> ConditionGroup=audio

IMHO, Condition*= лучше вешать на {pipewire,pipewire-pulse,wireplumber}.socket, а не на сервис. Как и включать с --global, если хочется.
Comment 5 Arseny Maslennikov 2024-01-06 17:06:29 MSK
(In reply to Антон Мидюков from comment #0)
> Глобальное включение pipewire.service:
> # systemctl --global enable pipewire.service
> 
> Приводит к тому, что он запускается вообще у всех пользователей, включая
> root.
> Решение проблемы видится мне в том, чтобы запускать его только у тех
> пользователей, которые состоят в группе audio.
> Для этого нужно добавить в pipewire.service в секцию [Unit] строчку:
> ConditionGroup=audio

Не лучше ли ConditionUser=!0?
Значение !root взято из юнитов для pulseaudio, но оно не учитывает ситуации, где аккаунтов с uid 0 и разными shadow несколько.

Более того, pipewire — это ещё и видео; странно его завязывать на группу audio.
Comment 6 Антон Мидюков 2024-01-06 20:13:29 MSK
(Ответ для Arseny Maslennikov на комментарий #4)
> (In reply to Антон Мидюков from comment #0)
> > Глобальное включение pipewire.service:
> > # systemctl --global enable pipewire.service
> > 
> > Приводит к тому, что он запускается вообще у всех пользователей, включая
> > root.
> > Решение проблемы видится мне в том, чтобы запускать его только у тех
> > пользователей, которые состоят в группе audio.
> > Для этого нужно добавить в pipewire.service в секцию [Unit] строчку:
> > ConditionGroup=audio
> 
> IMHO, Condition*= лучше вешать на
> {pipewire,pipewire-pulse,wireplumber}.socket, а не на сервис. Как и включать
> с --global, если хочется.

Действительно, проблема с запуском pipewire там, где не нужно, решается включением сокетов вместо сервисов. Для wireplumber нет сокета, но он не включится без pipewire.service.
Спасибо! Я закрываю багу, как notabug.