Use a wrapper script:
#!/usr/bin/bash
url=$1
if [[ $url == *youtube.com/watch* ]] ||
[[ $url == *youtu.be* ]] ||
[[ $url == *vimeo.com* ]] ||
[[ $url == *instagram.com* ]] ||
[[ $url == *facebook.com* ]] ||
[[ $url == *twitter.com* ]] ||
[[ $url == *x.com* ]]; then
mpv $url
if [[ $? -ne 0 ]]; then
kdialog --error "Error playing video $url"
exit 1
fi
elif [[ $url == ^mailto:* ]]; then
thunderbird $url
else
firefox $url
fi
$ chmod +x ~/.local/bin/url-handler.sh
~/.local/share/applications/url-handler.desktop:
[Desktop Entry]
Name=URL Handler
Exec=/home/YOUR_USERNAME/.local/bin/url-handler.sh %u
Terminal=false
Type=Application
MimeType=x-scheme-handler/http;x-scheme-handler/https;
$ xdg-mime default url-handler.desktop x-scheme-handler/http
$ xdg-mime default url-handler.desktop x-scheme-handler/https
🎩-tip: this Google Gemini transcript (with my edits)