Linux associate file name extension with opening program

Share on:

Overview

Manually associate file extensions and open programs for Linux.

When Linux does not recognize a certain extension, we need to create a MIME type for the extension. Linux decides opening program by MIME type, not directly file name extension.

Then we associate this MIME type with a program menu item.

Manual associate steps

  1. Create a MIME type for the file name extension

    If your Linux already recognizes this extension, you don't need to do this step. In your file manager, check to see if the file with this extension is correctly recognized. Or use fileCommand to view.

    Create application-x-SUFFIX.xmlContent:

    1<?xml version="1.0" encoding="UTF-8"?>
    2<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    3  <mime-type type="application/x-SUFFIX">
    4      <comment>YOUR DESCRIPTION FOR THIS SUFFIX</comment>
    5      <icon name="application-x-SUFFIX"/>
    6      <glob-deleteall/>
    7      <glob pattern="*.SUFFIX"/>
    8  </mime-type>
    9</mime-info> 
    

    Put application-x-SUFFIX.xmlTo ~/.local/share/mime/packages/
    Refresh the system MIME database

    1$ update-mime-database ~/.local/share/mime
    
  2. Build a menu item for the program

    If this program already has a menu item, skip this step.

    Create PROGRAM.desktop, Content:

     1[Desktop Entry]
     2Version=1.0
     3Type=Application
     4Name=PROGRAM NAME TO DISPLAY
     5Icon="/path-to/ICON FILE"
     6Exec="/path-to/EXECUTABLE" %f
     7Path="/path-to/" (optional)
     8NoDisplay=false (true=not show in system menu)
     9Categories=Utility;
    10StartupNotify=false
    11Terminal=false
    

    The key is, on lineExec=, %fpasses the file path to the executing program.
    For Exec= you can also use the command directly without an absolute path. ForIcon= you can also directly write the icon name recognized by the system without using a path.
    Put PROGRAM.desktop to ~/.local/share/applications/

  3. Set a program to open MIME type files
    Modify ~/.config/mimeapps.listor ~/.local/share/applications/mimeapps.list(abandoned)

    1[Added Associations]
    2application/x-SUFFIX=PROGRAM.desktop;OTHER-PROGRAM.desktop;OTHER-PROGRAM2.desktop;
    

    among them application/x-SUFFIXIs the MIME type you just created. If the MIME type is the original one and not just created, replace it with the original MIME type name.

Reference

https://wiki.archlinux.org/index.php/Default_applications#MIME_database

All articles are original (except for those specially claimed) and copyrighted. Copying without permission is forbidden.

Buy me a coffee

Your donation will be an impetus for me!