#!/bin/sh
### BEGIN INIT INFO
# Provides:          pipewire
# Required-Start:    $network $dbus
# Required-Stop:     $network $dbus
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: PipeWire audio service
# Description:       Starts PipeWire core, PulseAudio replacement, and WirePlumber.
# X-Start-Before:
# X-Stop-After:
# X-Timesys-Start-Number:  16
# X-Timesys-Stop-Number:   86
### END INIT INFO
### END INIT INFO

export XDG_RUNTIME_DIR=/tmp
export PIPEWIRE_RUNTIME_DIR=/tmp

PIPEWIRE=/usr/bin/pipewire
PIPEWIRE_PULSE=/usr/bin/pipewire-pulse
WIREPLUMBER=/usr/bin/wireplumber

start() {
    echo "Starting PipeWire"

    [ -x "$PIPEWIRE" ] && $PIPEWIRE >/dev/null 2>&1 &
    [ -x "$PIPEWIRE_PULSE" ] && $PIPEWIRE_PULSE >/dev/null 2>&1 &
    [ -x "$WIREPLUMBER" ] && $WIREPLUMBER >/dev/null 2>&1 &

    echo "[OK]"
}

stop() {
    echo "Stopping PipeWire"

    killall wireplumber pipewire-pulse pipewire 2>/dev/null

    echo "[OK]"
}

restart() {
    stop
    sleep 1
    start
}

case "$1" in
    start|stop|restart)
        "$1"
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit 0

