Ubuntu – How to associate file extension (not file type) for a particular application

configurationfile associationfilesystem

I use taskcoach to create a list of my tasks.

The data I entered was saved, say, in tasks.tsk on my Desktop. Internally, this is an XML file of specific structure.

Now whenever I open it, it opens in my text editor, like any other XML.

I've tried changing extension to .task and .my_tasks, but associated program is the still the editor.

After googling and reading forums, I've right-clicked the file, and in Properties -> Open With chose TaskCoach.

The file opens in TaskCoach, but any other .XML file gets opened with TaskCoach too!

Q: How do I make ubuntu open .task files in TaskCoach while preserving association .xml -> editor?

Best Answer

Rename the file you have as _anything_.task (where _anything_ is something suitably descriptive.)

First you need to create an XML file with the extension information in it. (If you wish, copy the text below into a new text file and save it as task.xml.)

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/taskcouch">
<comment>TaskCoach File</comment>
<comment xml:lang="bg">Taskcoach</comment>
    <comment xml:lang="cs">Taskcoach</comment>
    <comment xml:lang="de">Taskcoach</comment>
    <comment xml:lang="es">Taskcoach</comment>
    <comment xml:lang="eu">Taskcoach</comment>
    <comment xml:lang="hu">Taskcoach</comment>
    <comment xml:lang="it">Taskcoach</comment>
    <comment xml:lang="ko">Taskcoach</comment>
    <comment xml:lang="nb">Taskcoach</comment>
    <comment xml:lang="nl">Taskcoach</comment>
    <comment xml:lang="nn">Taskcoach</comment>
    <comment xml:lang="sv">Taskcoach</comment>
    <comment xml:lang="uk">Taskcoach</comment>
    <comment xml:lang="vi">Taskcoach</comment>
<glob pattern="*.task"/>
<alias type="application/taskcoach"/>
</mime-type>
</mime-info>

You now need to save or copy this new file into the directory

  • ~/.local/share/mime/packages for a per-user file association or
  • /usr/share/mime/packages for a system-wide file association.

Once that is done, run

update-mime-database [MIME-DIRECTORY]

where [MIME-DIRECTORY] is the previously chosen directory minus the /packages suffix. (Use sudo for the system-wide association.)

Now, open your file manager and right-click on anything.task and select taskcoach as the default program with the open with option in the context menu.

Job done. All .task files will now open with taskcoach!