65 lines
1.9 KiB
Text
65 lines
1.9 KiB
Text
|
|
#!/bin/bash
|
||
|
|
# rc.mpd - Music Player Daemon for Slackware
|
||
|
|
# Only starts if /mnt/media is mounted (NFS share must be available)
|
||
|
|
|
||
|
|
MPD=/usr/bin/mpd
|
||
|
|
CONF=/home/green/.config/mpd/mpd.conf
|
||
|
|
PIDFILE=/var/run/mpd/mpd.pid
|
||
|
|
|
||
|
|
start() {
|
||
|
|
if [ -f "$PIDFILE" ] && kill -0 "$(cat $PIDFILE)" 2>/dev/null; then
|
||
|
|
echo "mpd is already running"
|
||
|
|
return
|
||
|
|
fi
|
||
|
|
echo "Starting mpd..."
|
||
|
|
mkdir -p /var/run/mpd
|
||
|
|
chown green:users /var/run/mpd
|
||
|
|
# Ensure user runtime dir exists (normally created by pam_systemd on login,
|
||
|
|
# but we start before login so we create it manually)
|
||
|
|
mkdir -p /run/user/1000
|
||
|
|
chown green:users /run/user/1000
|
||
|
|
chmod 700 /run/user/1000
|
||
|
|
# Wait for Tailscale to have connectivity to tower specifically
|
||
|
|
echo "Waiting for Tailscale connectivity to tower..."
|
||
|
|
for i in $(seq 1 30); do
|
||
|
|
tailscale ping --c 1 100.73.64.64 &>/dev/null && break
|
||
|
|
sleep 1
|
||
|
|
done
|
||
|
|
# Now trigger autofs mount
|
||
|
|
echo "Waiting for /mnt/media/Music..."
|
||
|
|
for i in $(seq 1 15); do
|
||
|
|
ls /mnt/media/Music &>/dev/null && break
|
||
|
|
sleep 1
|
||
|
|
done
|
||
|
|
if ! ls /mnt/media/Music &>/dev/null; then
|
||
|
|
echo "WARNING: /mnt/media/Music not accessible after wait, starting MPD anyway"
|
||
|
|
fi
|
||
|
|
sudo -u green XDG_RUNTIME_DIR=/run/user/1000 $MPD $CONF
|
||
|
|
echo "mpd started"
|
||
|
|
}
|
||
|
|
|
||
|
|
stop() {
|
||
|
|
if [ -f "$PIDFILE" ] && kill -0 "$(cat $PIDFILE)" 2>/dev/null; then
|
||
|
|
echo "Stopping mpd..."
|
||
|
|
sudo -u green $MPD --kill $CONF
|
||
|
|
else
|
||
|
|
echo "mpd is not running"
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
status() {
|
||
|
|
if [ -f "$PIDFILE" ] && kill -0 "$(cat $PIDFILE)" 2>/dev/null; then
|
||
|
|
echo "mpd is running (pid $(cat $PIDFILE))"
|
||
|
|
else
|
||
|
|
echo "mpd is not running"
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
case "$1" in
|
||
|
|
start) start ;;
|
||
|
|
stop) stop ;;
|
||
|
|
restart) stop; sleep 1; start ;;
|
||
|
|
status) status ;;
|
||
|
|
*) echo "Usage: $0 {start|stop|restart|status}" ;;
|
||
|
|
esac
|