The bug
I’ve noticed that Discord for Linux takes a very, very long time to start up – sometimes in the order of hours. During this time, my laptop gets very hot. I eventually decided to look into this and found that several instances of xdg-mime
were taking up 100% CPU. Killing them caused Discord to open instantly.
Apparently this issue is present with Spotify too. This fix will work for both of them.
You can fix this manually by killing the various xdg-mime
processes every time you open Discord, but that’s annoying. You can work around it permanently by creating a custom wrapper around xdg-mime
and placing it somewhere in your $PATH
with higher priority than /usr/local/bin
, or wherever xdg-mime
is on your system. In this guide, we’ll use /usr/local/bin
.
The fix
Create a file called xdg-mime
in /usr/local/bin
by running sudo nano /usr/local/bin/xdg-mime
. Paste this in the file:
#!/usr/bin/sh
if [[ "$@" == *"x-scheme-handler/discord"* ]] || [[ "$@" == *"x-scheme-handler/spotify"* ]]; then
/usr/bin/true
else
/usr/bin/xdg-mime $@
fi
If xdg-mime
isn’t in /usr/bin
on your machine (you can check where it is by running which xdg-mime
), you’ll need to edit that script to match its location.
Save it with ctrl-o, then exit with ctrl-x. This should fix the problem.
The explanation
For whatever reason, Discord and Spotify have a lot of trouble registering themselves with xdg-mime
. This causes them to hang for minutes or hours on startup. The workaround outlined above simply checks for what you’re trying to do with xdg-mime, and if you’re trying to modify the scheme handlers for Discord or Spotify – the process that causes these apps to hang – it carries on without doing anything. If you’re doing anything else, it passes you through to the real xdg-mime
.