Mime Types/Open

(The hildon-mime-open API)
(redirect to developer guide)
 
(One intermediate revision not shown)
Line 1: Line 1:
-
== The hildon-mime-open API ==
+
#REDIRECT [[Documentation/Maemo 5 Developer Guide/Application Development/MIME type mapping]]
-
 
+
-
This document describes how desktop files are used with the hildon_mime_open_* API.
+
-
 
+
-
Note: This document assumes familiarity with adding MIME types to the system, using the [http://standards.freedesktop.org/shared-mime-info-spec/latest/ shared-mime-info specification].
+
-
 
+
-
 
+
-
Also, make sure to be fully aqainted with the [http://standards.freedesktop.org/desktop-entry-spec/latest/ desktop entry standard] which libhildonmime builds on top of.
+
-
 
+
-
There are 2 different utilities used when it comes to the MIME database/desktop files:
+
-
 
+
-
* '''update-desktop-database'''
+
-
 
+
-
* '''update-mime-datebase'''
+
-
 
+
-
== Desktop files ==
+
-
 
+
-
These are found in $prefix/share/applications. Each application has a desktop file, that specifies how it is started, what name it has, etc. It also specifies which MIME types the application can handle, if
+
-
any.
+
-
 
+
-
For the hildon_mime_open_* API, there is one addition to the desktop file format that is relevant: the 'X-Osso-Service' key. This identifies the D-Bus service to use when trying to open a URI. The key
+
-
is used in the standard [Desktop Entry] group in the desktop files.
+
-
 
+
-
The 'MimeType' key is part of the Freedesktop standard, and should be a semi-color separated list of types, for example:
+
-
 
+
-
MimeType=image/png;image/jpeg;
+
-
 
+
-
Especially note the trailing semi-colon.
+
-
 
+
-
When using hildon_mime_open_*, the only thing that is used to identify the application to launch is the MIME type.
+
-
 
+
-
 
+
-
== Default application ==
+
-
 
+
-
The notion of "default application" for a MIME type is handled through the GnomeVFS. It uses a file that lists the default desktop file for each MIME type. This file is something that the "distro" needs to take care of, and is not something each application can setup for itself.
+
-
 
+
-
The file is usually located at the default XDG data dir location:
+
-
 
+
-
$(prefix)/share/applications/defaults.list
+
-
 
+
-
But also looks in other directories as specified by the environment variable XDG_DATA_DIRS.
+
-
 
+
-
The file format is simple and can look like this, for example:
+
-
 
+
-
[Default Applications]
+
-
application/ogg=totem.desktop
+
-
application/x-flac=totem.desktop
+
-
image/x-png=eog.desktop
+
-
 
+
-
 
+
-
(As a side point, the GnomeVFS API also uses a file in the user's home directory to override the system one, it's located in $XDG_DATA_HOME, normally set to ~/.local on regular desktops.)
+
-
 
+
-
 
+
-
== Implementation details ==
+
-
 
+
-
 
+
-
When the hildon_mime_open_* API is called with a URI, GnomeVFS is used to get the MIME type. Then the list of applications that can handle that type is listed, and the defualt one (*) is used. If there is no
+
-
default, the first one from the list is used.
+
-
 
+
-
Then a DBus message is sent to activate the service specified by the 'X-Osso-Service' value for the found applications's desktop file, and the URI is passed to it for opening.
+
-
 
+
-
 
+
-
== Updating the desktop and MIME type databases ==
+
-
 
+
-
The 'update-desktop-database' command parses all the *.desktop files pointed to and generates a cache for them to speed up the lookup. This generation is usually done in the post-inst phase in a Debian package, in addition to "make install" in the makefile target:
+
-
 
+
-
  update-desktop-database $prefix/share/applications
+
-
 
+
-
Likewise for the 'update-mime-database' command, which generates a cache for looking up MIME types.
+

Latest revision as of 14:18, 28 January 2010

  1. REDIRECT Documentation/Maemo 5 Developer Guide/Application Development/MIME type mapping