Reset VIM as XDG default for text files

I’ve been a Vim fanatic for a little over a year now, but my first foray into the realm of the super editors was a quick fling with of Emacs. That lasted for about two weeks before I decided that hitting the Control key that often was reducing my quality of life.

A few nights ago I randomly decided to install Emacs on my machine during a bout of insomnia. The next morning I tried to download a file (a VIM script coincidentally) from Firefox and the file opened in Emacs. In fact, every text file I tried to open from the browser opened in Emacs.

I checked my $EDITOR environment variable, but it was still pointing to Vim.

I tried Chromium and the same thing happened.

I then checked the current XDG default for plain text files using xdg-mine:

$ xdg-mime query default text/plain


A-ha! I now had multiple desktop entries installed that could potentially open text files and I’m guessing xdg-open just uses the most recently added desktop file? I’m not sure. At any rate, Emacs was now set as the default.

I ran:

$ xdg-mime default gvim.desktop $(grep MimeType /usr/share/applications/gvim.desktop
  | sed 's/MimeType=//'
  | tr ';' ' ')

to reset Vim (technically “gvim.desktop”) as the default editor for all of the mime types that Vim can handle. I used grep and sed to grab the list of mime types from the “gvim.desktop” file itself.

I first tried setting the default to the full path to the “gvim.desktop” file, but it turns out that xdg-mime just wants the base file name.

Anyway, YMMV and all of that, but my files now open in Vim again and I learned a little bit more about XDG/Freedesktop.