Learned a few things about xdg and mimetype registration in the last week that could be helpful to have condensed in a single place.
No Need to Ship a Mailcap Mime File
If you already ship a .desktop
file (that is what ends up in /usr/share/applications/
)
which has a MimeType
declared, there is no need to also ship a mailcap file (that
is what ends up in /usr/lib/mime/packages/
). Some triggers will do the conversion work
for you. See also Debian Policy 4.9.
Reverse DNS Naming Convention for .desktop Files
Seems to be a closely guarded secret, maybe mainly known inside the Gnome world, but it's in the spec. Also not very widely known inside Debian if I look at my local system as not very representative sample.
Your hicolor Theme App Icon can be a Mime Type Icon as Well
In case you didn't know the hicolor
icon theme is the default fallback theme.
Many of us already install application icons e.g. in
/usr/share/icons/hicolor/48x48/apps/
which is used in conjunction with the
Icon
field in the .desktop
file to locate the application icon.
Now the next step, and there it seems quite of few us miss out, is to create
a symlink to also provide a mime type icon, so it's displayed in
graphical file managers for the application data files. The schema here is simple:
Take the MimeType
e.g. application/x-vym
and replace the /
with a -
and use
that as file name in e.g. /usr/share/icons/hicolor/48x48/mimetypes/
.
In the vym case that is /usr/share/icons/hicolor/48x48/mimetypes/application-x-vym.png
.
If you have one use a scalable .svg
file instead of .png
.
This seems to be an area where Debian lacks a bit of tooling to automatically
convert application icons to all the different sizes and install it in all the
appropriate places. What is already there is a trigger to run gtk-update-icon-cache
when you install new icons into one of the icon theme folder so they're picked up.
No Priority or Order in .desktop Files
Likely something that hapens on all my fresh installations: Libreoffice is installed
and xdg-open
starts to open pdf files with Libreoffice instead of evince. Now I've to
figure out again to run xdg-mime default org.gnome.Evince.desktop application/pdf
to
change that (at least for my user). Background here is that the desktop file spec
explicitly mandates "Priority for applications is handled external to the .desktop files.". That's why we got in addition to all of that mimeapps.list
files.
And now, after running the xdg-mime
command from above, we've a ~/.config/mimeapps.list
defining
[Default Applications]
application/pdf=org.gnome.Evince.desktop
Debian as whole seems to be not very keen on shipping something like a sensible
default mimeapps.list
outside of desktop environment specific ones. A quick search
gave me just
$ apt-file search mimeapps.list
cinnamon-desktop-data: /usr/share/applications/x-cinnamon-mimeapps.list
gdm3: /usr/share/gdm/greeter/applications/mimeapps.list
gnome-session-common: /usr/share/applications/gnome-mimeapps.list
plasma-workspace: /usr/share/applications/kde-mimeapps.list
sxmo-utils: /usr/share/applications/mimeapps.list
sxmo-utils: /usr/share/sxmo/xdg/mimeapps.list
While it's a bit anoying to run into that pdf vs Libreoffice thing every now and then, it's maybe better to not have long controversial threads about default pdf viewer, like the ones we already had about the default MTA choices. And while we're at it: everyone using Libreoffice should give a virtual hug to rene@ for taming that beast since 2010 and OpenOffice.org before.