Search code examples
linuxinstallationmimefile-type

Register file extensions / mime types in Linux


I'm developing a Linux application that has its own file format. I want my app to open when you double-click on those files.

How can I register a file extension and associate it with my application on Linux? I'm looking for a way that is standard (works with GNOME and KDE based systems) and can be done automatic when my program is installed or run for the first time.


Solution

  • Use xdg-utils from freedesktop.org Portland.

    Register the icon for the MIME type:

    xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype
    

    Create a configuration file (freedesktop Shared MIME documentation):

    <?xml version="1.0"?>
    <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
      <mime-type type="application/x-mytype">
        <comment>A witty comment</comment>
        <comment xml:lang="it">Uno Commento</comment>
        <glob pattern="*.myapp"/>
      </mime-type>
    </mime-info>
    

    Install the configuration file:

    xdg-mime install mytype-mime.xml
    

    This gets your files recognized and associated with an icon. xdg-mime default can be used for associating an application with the MIME type after you get a .desktop file installed.