aboutsummaryrefslogtreecommitdiffstats
path: root/community/pipewire/pipewire-launcher.sh
diff options
context:
space:
mode:
Diffstat (limited to 'community/pipewire/pipewire-launcher.sh')
-rw-r--r--community/pipewire/pipewire-launcher.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/community/pipewire/pipewire-launcher.sh b/community/pipewire/pipewire-launcher.sh
new file mode 100644
index 00000000000..16a8adb800c
--- /dev/null
+++ b/community/pipewire/pipewire-launcher.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# We need to kill any existing pipewire instance to restore sound
+pkill -u "${USER}" -fx /usr/bin/pipewire-pulse 1>/dev/null 2>&1
+pkill -u "${USER}" -fx /usr/bin/pipewire-media-session 1>/dev/null 2>&1
+pkill -u "${USER}" -fx /usr/bin/wireplumber 1>/dev/null 2>&1
+pkill -u "${USER}" -fx /usr/bin/pipewire 1>/dev/null 2>&1
+
+exec /usr/bin/pipewire &
+
+# wait for pipewire to start before attempting to start related daemons
+while [ "$(pgrep -f /usr/bin/pipewire)" = "" ]; do
+ sleep 1
+done
+
+if [ -x /usr/bin/wireplumber ]; then
+ exec /usr/bin/wireplumber &
+elif [ -x /usr/bin/pipewire-media-session ]; then
+ exec /usr/bin/pipewire-media-session &
+fi
+
+[ -f "/usr/share/pipewire/pipewire-pulse.conf" ] && exec /usr/bin/pipewire-pulse &