From dea6fa7f4c3053050d2819afa80265e5ffb39730 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 30 Jan 2025 12:50:49 +0100 Subject: [PATCH] systemd: add systemwide pipewire-pulse files We can and it works, so why not. --- src/daemon/systemd/system/meson.build | 8 ++++++- .../systemd/system/pipewire-pulse.service.in | 24 +++++++++++++++++++ .../systemd/system/pipewire-pulse.socket | 12 ++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/daemon/systemd/system/pipewire-pulse.service.in create mode 100644 src/daemon/systemd/system/pipewire-pulse.socket diff --git a/src/daemon/systemd/system/meson.build b/src/daemon/systemd/system/meson.build index d06d3adf6..0cc17670e 100644 --- a/src/daemon/systemd/system/meson.build +++ b/src/daemon/systemd/system/meson.build @@ -3,13 +3,19 @@ if get_option('systemd-system-unit-dir') != '' systemd_system_services_dir = get_option('systemd-system-unit-dir') endif -install_data(sources : ['pipewire.socket', 'pipewire-manager.socket'], +install_data(sources : ['pipewire.socket', 'pipewire-manager.socket', 'pipewire-pulse.socket' ], install_dir : systemd_system_services_dir) systemd_config = configuration_data() systemd_config.set('PW_BINARY', pipewire_bindir / 'pipewire') +systemd_config.set('PW_PULSE_BINARY', pipewire_bindir / 'pipewire-pulse') configure_file(input : 'pipewire.service.in', output : 'pipewire.service', configuration : systemd_config, install_dir : systemd_system_services_dir) + +configure_file(input : 'pipewire-pulse.service.in', + output : 'pipewire-pulse.service', + configuration : systemd_config, + install_dir : systemd_system_services_dir) diff --git a/src/daemon/systemd/system/pipewire-pulse.service.in b/src/daemon/systemd/system/pipewire-pulse.service.in new file mode 100644 index 000000000..8752f7854 --- /dev/null +++ b/src/daemon/systemd/system/pipewire-pulse.service.in @@ -0,0 +1,24 @@ +[Unit] +Description=PipeWire PulseAudio Service +Requires=pipewire-pulse.socket +Wants=pipewire.service pipewire-session-manager.service +After=pipewire.service pipewire-session-manager.service + +[Service] +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoNewPrivileges=yes +SystemCallArchitectures=native +SystemCallFilter=@system-service +Type=simple +AmbientCapabilities=CAP_SYS_NICE +ExecStart=@PW_PULSE_BINARY@ +Restart=on-failure +User=pipewire +Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire +Environment=PULSE_RUNTIME_PATH=%t/pulse + +[Install] +Also=pipewire-pulse.socket +WantedBy=pipewire.service + diff --git a/src/daemon/systemd/system/pipewire-pulse.socket b/src/daemon/systemd/system/pipewire-pulse.socket new file mode 100644 index 000000000..0a692949b --- /dev/null +++ b/src/daemon/systemd/system/pipewire-pulse.socket @@ -0,0 +1,12 @@ +[Unit] +Description=PipeWire PulseAudio System Socket + +[Socket] +Priority=6 +ListenStream=%t/pulse/native +SocketUser=pipewire +SocketGroup=pipewire +SocketMode=0660 + +[Install] +WantedBy=sockets.target