dotfiles/config/mpd/rc.mpd

65 lines
1.9 KiB
Text
Raw Permalink Normal View History

2026-08-09 14:31:49 -04:00
#!/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