diff --git a/dev/lang/lua/ympbuild b/dev/lang/lua/ympbuild index 2e93c0e8..82e3f931 100644 --- a/dev/lang/lua/ympbuild +++ b/dev/lang/lua/ympbuild @@ -34,6 +34,7 @@ package () { INSTALL_TOP="$DESTDIR" \ INSTALL_DATA='cp -d' \ INSTALL_MAN="$DESTDIR/usr/share/man/man1" \ + INSTALL_INC="$DESTDIR/usr/include" TO_LIB="liblua.so liblua.so.5.4 liblua.so.5.4.7" install -Dm644 ../lua.pc "$DESTDIR"/usr/lib/pkgconfig/lua54.pc ln -sf lua54.pc "$DESTDIR"/usr/lib/pkgconfig/lua.pc 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..da84d85a 100644 --- a/media/video/pipewire/pipewire-launcher.sh +++ b/media/video/pipewire/pipewire-launcher.sh @@ -1,27 +1,47 @@ -#!/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 +exec &>~/pipewire.log # 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 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 + +dbus='' +if [ -f /usr/bin/dbus-run-session ] ; then + dbus='/usr/bin/dbus-run-session' +fi exec /usr/bin/pipewire & +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 + # 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 & +# 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 + exec $dbus /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 - -[ -f "/usr/share/pipewire/pipewire-pulse.conf" ] && exec /usr/bin/pipewire-pulse & +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 } diff --git a/media/video/wireplumber/wireplumber.desktop b/media/video/wireplumber/wireplumber.desktop new file mode 100644 index 00000000..08fd58af --- /dev/null +++ b/media/video/wireplumber/wireplumber.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Name=Wireplumber +Comment=Start Wireplumber +Exec=/usr/bin/wireplumber +Terminal=false +Type=Application +X-KDE-autostart-phase=1 +X-GNOME-HiddenUnderSystemd=true +X-systemd-skip=true diff --git a/media/video/wireplumber/ympbuild b/media/video/wireplumber/ympbuild index 6389d956..eebfdf15 100644 --- a/media/video/wireplumber/ympbuild +++ b/media/video/wireplumber/ympbuild @@ -7,10 +7,12 @@ description='Session / policy manager implementation for PipeWire' email='bayramk@gmail.com' maintainer='bk' license=('GPLv3') -source=("https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/$version/$name-$version.tar.gz") +source=("https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/$version/$name-$version.tar.gz" + "wireplumber.desktop") depends=(pipewire) makedepends=() -sha256sums=('ce7b7217d880bed1438e408ea412716a259cb46b09f597bfd652a577dc60185c') +sha256sums=('ce7b7217d880bed1438e408ea412716a259cb46b09f597bfd652a577dc60185c' + 'SKIP') group=(media.video) uses=() arch=('x86_64') @@ -36,5 +38,8 @@ build(){ package(){ ninja -C build install + # install autostart file + mkdir -p $DESTDIR/etc/xdg/autostart + install ../wireplumber.desktop $DESTDIR/etc/xdg/autostart/ }