#!/bin/sh uri="${1}" cleanup() { kioclient_pid=$(ps -C kioclient5 -o pid=) [ -n "${kioclient_pid}" ] && kill ${kioclient_pid} } trap cleanup EXIT use_kio() { $(kioclient5 cat "${1}" | mpv --player-operation-mode=pseudo-gui - > /dev/null) & while ps -C mpv > /dev/null; do sleep 2 done exit 0 } use_mpv() { mpv --player-operation-mode=pseudo-gui "${1}" & exit 0 } command -v mpv > /dev/null || exit 1 command -v kioclient5 > /dev/null || use_mpv "${uri}" case "${uri}" in fish://*) use_kio "${uri}" ;; ftp://*) use_kio "${uri}" ;; nfs://*) use_kio "${uri}" ;; sftp://*) use_kio "${uri}" ;; smb://*) use_kio "${uri}" ;; webdav://*) use_kio "${uri}" ;; *) use_mpv "${uri}" ;; esac