[Unit] Description=mpv persistent player (DRM/HDMI output, JSON IPC) # Wait until udev has settled so the DRM/HDMI devices (/dev/dri/*) exist # before mpv tries to grab the display. Without this, a cold-boot race can # leave mpv running but never rendering to HDMI (you see the console instead), # even though the exact same command works when run by hand later. After=local-fs.target systemd-udev-settle.service Wants=systemd-udev-settle.service [Service] Type=simple User=${MEDIAPI_USER} SupplementaryGroups=video render RuntimeDirectory=mediapi RuntimeDirectoryMode=0770 ExecStart=/usr/bin/mpv \ --idle=yes \ --input-ipc-server=/run/mediapi/mpv.sock \ --vo=gpu-next --gpu-context=drm \ --hwdec=auto-safe \ --fullscreen \ --no-terminal \ --keep-open=no \ --ao=alsa Restart=on-failure RestartSec=2 [Install] WantedBy=multi-user.target