Register / mime file extensions on Linux

I am developing a Linux application that has its own file format. I want my application to open when you double-click on these files.

How to register a file extension and associate it with my Linux application? I am looking for a method that is standard (works with GNOME and KDE systems) and can be executed automatically when my program is installed or launched for the first time.

+51
linux installation file-type mime
Aug 27 '08 at 19:12
source share
4 answers

Use xdg-utils from freedesktop.org Portland .

Register an 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 General 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 

It recognizes your files and is associated with an icon. xdg-mime default can be used to bind the application to the MIME type after receiving .desktop .

+42
Aug 28 '08 at 8:18
source share

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

I thought that both Gnome and KDE (maybe only 4+?) Used freesktop shared mime info spec , but I could be completely wrong.

+9
Aug 28 '08 at 8:03
source share

1) on linux, this is a feature of the desktop environment, not os itself. 2) GNOME and KDE have different methods to achieve this.
3) There is nothing stopping you from doing this in both directions.

+4
Aug 27 '08 at 19:14
source share

Try this script: required:

 1. your application icon -> $APP = FIREFOX.png 2. your mimetype icon -> application-x-$APP = HTML.png 

in the current directory:




 #BASH SCRIPT: Register_my_new_app_and_its_extension.sh APP="FOO" EXT="BAR" COMMENT="$APP data file" # Create directories if missing mkdir -p ~/.local/share/mime/packages mkdir -p ~/.local/share/applications # Create mime xml echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\"> <mime-type type=\"application/x-$APP\"> <comment>$COMMENT</comment> <icon name=\"application-x-$APP\"/> <glob pattern=\"*.$EXT\"/> </mime-type> </mime-info>" > ~/.local/share/mime/packages/application-x-$APP.xml # Create application desktop echo "[Desktop Entry] Name=$APP Exec=/usr/bin/$APP %U MimeType=application/x-$APP Icon=$APP Terminal=false Type=Application Categories= Comment= "> ~/.local/share/applications/$APP.desktop # update databases for both application and mime update-desktop-database ~/.local/share/applications update-mime-database ~/.local/share/mime # copy associated icons to pixmaps cp $APP.png ~/.local/share/pixmaps cp application-x-$APP.png ~/.local/share/pixmaps 

make sure: FOO exists in / usr / bin (or in $ PATH)

0
Jan 13 '14 at 7:31
source share



All Articles