diff --git a/media/libs/libpulse/ympbuild b/media/libs/libpulse/ympbuild index 899bd29f..ea34c2ef 100644 --- a/media/libs/libpulse/ympbuild +++ b/media/libs/libpulse/ympbuild @@ -32,5 +32,9 @@ build(){ package(){ ninja -C build install + # remove pulseaudio service and binaries (We uses pipewire-pulse) + rm -f $DESTDIR/usr/bin/start-pulseaudio-x11 + rm -f $DESTDIR/usr/bin/pulseaudio + rm -rf $DESTDIR/etc/xdg } diff --git a/media/video/pipewire/pipewire-launcher.sh b/media/video/pipewire/pipewire-launcher.sh index d04e4b69..fa2ea9bc 100644 --- a/media/video/pipewire/pipewire-launcher.sh +++ b/media/video/pipewire/pipewire-launcher.sh @@ -1,9 +1,8 @@ -#!/bin/sh - -# we must exit if cinnamon desktop detected -if [ "$XDG_CURRENT_DESKTOP" == "X-Cinnamon" ]; then - exit 0 -fi +#!/bin/bash +export PIPEWIRE_RUNTIME_DIR=/run/pipewire +export XDG_RUNTIME_DIR=/run/pipewire +export PULSE_RUNTIME_PATH=/run/pipewire/pulse +umask 002 # We need to kill any existing pipewire instance to restore sound pkill -u "${USER}" -fx /usr/bin/pipewire-pulse 1>/dev/null 2>&1 @@ -23,5 +22,23 @@ if [ -x /usr/bin/wireplumber ]; then 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 & +# wait until start pipewire +while ! [ -e /run/pipewire/pipewire-0 ] ; do + sleep 1 +done +chgrp audio -R /run/pipewire/ +# start pipewire-pulse +if [ -f "/usr/share/pipewire/pipewire-pulse.conf" ] ; then + dbus='' + if [ -f /usr/bin/dbus-run-session ] ; then + dbus='/usr/bin/dbus-run-session' + fi + exec $dus /usr/bin/pipewire-pulse & + # wait until start pipewire-pulse + while ! [ -e /run/pipewire/pulse/native ] ; do + sleep 1 + done + chgrp audio -R /run/pipewire/pulse + chmod 775 /run/pipewire/pulse +fi +wait \ No newline at end of file diff --git a/media/video/pipewire/pipewire.desktop b/media/video/pipewire/pipewire.desktop deleted file mode 100644 index 0b353d85..00000000 --- a/media/video/pipewire/pipewire.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Pipewire -Comment=Start Pipewire -Exec=/usr/libexec/pipewire-launcher -Terminal=false -Type=Application -X-KDE-autostart-phase=1 diff --git a/media/video/pipewire/pipewire.initd b/media/video/pipewire/pipewire.initd new file mode 100644 index 00000000..ce8afd4d --- /dev/null +++ b/media/video/pipewire/pipewire.initd @@ -0,0 +1,22 @@ +#!/sbin/openrc-run + +name="pipewire" +description="PipeWire multimedia server" +pidfile="/run/${name}.pid" +command="/usr/libexec/pipewire-launcher" +command_background=true +supervisor=supervise-daemon +command_user="pipewire:audio" + + +user="audio" +group="audio" + +depend() { + need dbus +} + +start_pre() { + checkpath --directory --mode 0755 --owner=pipewire:audio /run/${name} +} + diff --git a/media/video/pipewire/ympbuild b/media/video/pipewire/ympbuild index a58b8b04..1e123580 100644 --- a/media/video/pipewire/ympbuild +++ b/media/video/pipewire/ympbuild @@ -8,7 +8,7 @@ email='bayramk@gmail.com' maintainer='bk' license=('GPLv3') source=("https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/$version/pipewire-$version.tar.gz" - "pipewire.desktop" + "pipewire.initd" "pipewire-launcher.sh") depends=(lilv libpulse alsa-lib dbus) makedepends=() @@ -45,10 +45,18 @@ build(){ package(){ ninja -C build install - mkdir -p ${DESTDIR}/usr/libexec ${DESTDIR}/etc/xdg/autostart/ - # pipewire launcher from alpine linux + mkdir -p ${DESTDIR}/usr/libexec \ + ${DESTDIR}/etc/init.d \ + ${DESTDIR}/etc/profile.d \ + ${DESTDIR}/etc/passwd.d + # pipewire launcher from alpine linux (with same modifications) install ../pipewire-launcher.sh ${DESTDIR}/usr/libexec/pipewire-launcher - install ../pipewire.desktop ${DESTDIR}/etc/xdg/autostart/ - + # pipewire system service + install ../pipewire.initd ${DESTDIR}/etc/init.d/pipewire + # environment variable + echo "export PIPEWIRE_RUNTOME_DIR=/run/pipewire" > ${DESTDIR}/etc/profile.d/pipewire.sh + echo "export PULSE_SERVER=unix:/run/pipewire/pulse/native" >> ${DESTDIR}/etc/profile.d/pipewire.sh + # pipewire user (uid same with audio group) + echo "pipewire:x:29:29::/run/pipewire:/bin/false" > "$DESTDIR"/etc/passwd.d/pipewire }