mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
systemd: Add system service and socket
Add system service and socket in addition to the user service and socket. The system service is started as pipewire user and group and clients need to be in the pipewire group to be able to connect.
This commit is contained in:
parent
120090741a
commit
5c52670421
5 changed files with 66 additions and 1 deletions
|
|
@ -26,6 +26,14 @@ option('systemd',
|
|||
description: 'Enable systemd integration',
|
||||
type: 'boolean',
|
||||
value: true)
|
||||
option('systemd-system-service',
|
||||
description: 'Install systemd system service file',
|
||||
type: 'boolean',
|
||||
value: false)
|
||||
option('systemd-user-service',
|
||||
description: 'Install systemd user service file',
|
||||
type: 'boolean',
|
||||
value: true)
|
||||
option('pipewire-alsa',
|
||||
description: 'Enable pipewire-alsa integration',
|
||||
type: 'boolean',
|
||||
|
|
|
|||
|
|
@ -1 +1,6 @@
|
|||
if get_option('systemd-system-service')
|
||||
subdir('system')
|
||||
endif
|
||||
if get_option('systemd-user-service')
|
||||
subdir('user')
|
||||
endif
|
||||
|
|
|
|||
12
src/daemon/systemd/system/meson.build
Normal file
12
src/daemon/systemd/system/meson.build
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
systemd_system_services_dir = systemd.get_pkgconfig_variable('systemdsystemunitdir', define_variable : [ 'prefix', prefix])
|
||||
|
||||
install_data(sources : 'pipewire.socket',
|
||||
install_dir : systemd_system_services_dir)
|
||||
|
||||
systemd_config = configuration_data()
|
||||
systemd_config.set('PW_BINARY', join_paths(pipewire_bindir, 'pipewire'))
|
||||
|
||||
configure_file(input : 'pipewire.service.in',
|
||||
output : 'pipewire.service',
|
||||
configuration : systemd_config,
|
||||
install_dir : systemd_system_services_dir)
|
||||
27
src/daemon/systemd/system/pipewire.service.in
Normal file
27
src/daemon/systemd/system/pipewire.service.in
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
[Unit]
|
||||
Description=Multimedia Service
|
||||
|
||||
# We require pipewire.socket to be active before starting the daemon, because
|
||||
# while it is possible to use the service without the socket, it is not clear
|
||||
# why it would be desirable.
|
||||
#
|
||||
# Installing pipewire and doing `systemctl start pipewire` will not get the
|
||||
# socket started, which might be confusing and problematic if the server is to
|
||||
# be restarted later on, as the client autospawn feature might kick in. Also, a
|
||||
# start of the socket unit will fail, adding to the confusion.
|
||||
#
|
||||
# After=pipewire.socket is not needed, as it is already implicit in the
|
||||
# socket-service relationship, see systemd.socket(5).
|
||||
Requires=pipewire.socket
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=@PW_BINARY@
|
||||
Restart=on-failure
|
||||
RuntimeDirectory=pipewire
|
||||
User=pipewire
|
||||
Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire
|
||||
|
||||
[Install]
|
||||
Also=pipewire.socket
|
||||
WantedBy=default.target
|
||||
13
src/daemon/systemd/system/pipewire.socket
Normal file
13
src/daemon/systemd/system/pipewire.socket
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[Unit]
|
||||
Description=Multimedia System
|
||||
|
||||
[Socket]
|
||||
Priority=6
|
||||
Backlog=5
|
||||
ListenStream=%t/pipewire/pipewire-0
|
||||
SocketUser=pipewire
|
||||
SocketGroup=pipewire
|
||||
SocketMode=0660
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
||||
Loading…
Add table
Add a link
Reference in a new issue