Friday, February 4, 2011

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 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.

  • 1) in linux this is a function of your desktop environment rather than the os itself.
    2) GNOME and KDE have different methods to accomplish this.
    3) There's nothing stopping you from doing it both ways.

  • GNOME and KDE are very different... don't count on finding a single solution.... you might get by with sticking appropriate files into:

    /usr/share/mime-info/
    

    Alternatively use the 'shebang' method and update your "file format" so that the first line can be:

    #!/bin/yourapp
    

    Then make sure all your files are marked executable and that your app doesn't get installed somewhere else ;)

    From sascha
  • There are two parts to this. You need to register a new file type and then create a desktop entry for your application. The desktop entry associates your application with your new mime type.

    I thought that both Gnome and KDE (maybe only 4+?) used the freedesktop shared mime info spec, but I may well be wrong.

    From Kai
  • 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.

    jldupont : Ubuntu 9.04 & Fedora Core 10 have the xdg utilites installed by default
    From skolima

0 comments:

Post a Comment