134

How do I set the default program that I use?

I have tried to open System InfoDefault Program → change my program, but it won't work,

Any idea? Or should I use Terminal?

I want to replace the default movie player with VLC media player, because the current movie player is useless to me.

3

15 Answers 15

152

There's yet another GUI solution, which might come handy for you ;)

Try opening the properties (right click -> Properties) of the file type you want to be always played by VLC.

Choose the Open with tab and either choose from a list or add one (by choosing from an extended program list or simply typing vlc as the command)


EDIT:

... and click on Set as default

enter image description here

8
  • 65
    Wow, what UI idiocy by Ubuntu. Right-click -> open with -> other application DOES NOT show "Set as default"... Right-click -> Properties -> Open With DOES show "Set as default".
    – Jeff Ward
    Mar 25, 2014 at 15:49
  • 2
    and for applications that do not show on the "others" list... regular users don't want to edit files and it should not be necessary to add extra GUI apps to do this kind of basic stuff, in my case fritzing does not apear as application to be associated with .fzz files and there is no button to point fritzing on the disk, why do ubuntu guys think that editing a text files is more acceptable than gui navigate the folders and point the application? ... this way ubuntu WILL NEVER reach the desktop
    – neu-rah
    Jun 7, 2014 at 15:15
  • 9
    Added bug report for this usability issue - bugs.launchpad.net/hundredpapercuts/+bug/1413283 Jan 21, 2015 at 16:09
  • 3
    But what should I do when I want to use app I didn't install through Ubuntu Software Center or apt-get? I have Blender from official website and it's not installed (I have it in /opt direcotry and I can access it from terminal). Can I show my Ubuntu which executable file to use?
    – Jacajack
    Mar 10, 2015 at 15:08
  • @Jacajack if this answer is not yet answered in Askubuntu.com, ask it :) This particular thread issues a use case for setting default, now what you need is "registering" a program within the system.
    – psukys
    Mar 12, 2015 at 13:59
38

If you're really desperate, just manually edit the file ~/.config/mimeapps.list.

format:

application/TYPE=LAUNCHER.desktop

Just add this under the [Default Applications] section if you want it to be default, or under [Added Associations] if it shouldn't be default.

Some programs still use the now deprecated ~/.local/share/applications/mimeapps.list, however, best is to make that a symlink to ~/.config/mimeapps.list to have a single config for this:

$ cat ~/.local/share/applications/mimeapps.list >> ~/.config/mimeapps.list
$ rm ~/.local/share/applications/mimeapps.list
$ ln -s ~/.config/mimeapps.list  ~/.local/share/applications/mimeapps.list
5
  • can you please give an example of the format?
    – dapias
    Dec 4, 2015 at 21:33
  • 1
    @dapias when you open the file, you will see lots of examples there that you can duplicate and edit. I.e. x-scheme-handler/mailto=thunderbird.desktop.
    – amertkara
    Jan 28, 2016 at 15:57
  • 8
    mimeapps.list can be put in many directories, full search path at: specifications.freedesktop.org/mime-apps-spec/… I prefer XDG_CONFIG_HOME which is just ~/.config/mimeapps.list and has higher precedence. Jan 19, 2017 at 9:08
  • 1
    I have no file in ~/.local/share/applications
    – alhelal
    May 21, 2018 at 6:12
  • is there an easy way to determine what the .desktop alias is for a given application? For example, Android Studio.
    – payne
    Sep 23, 2022 at 17:41
27
  1. Choice number one: Open a terminal where your file is and do the following command.

    mimeopen -d your_video.avi
    

    There is the output:

    Please choose a default application for files of type application/x-ms-dos-executable
    1) vlc
    2) ...
    3) Other...
    

    Use application #3
    Use command: vlc %f

    Press 1 if you see vlc, if not, chose the Other solution (3 in that case). Then type the name of your application followed by %f.

  2. Choice 2: Generic way

    mimeopen .avi
    

    And then do the step above.

3
  • 1
    maybe you can try %U rather than %f: the reason is that %f will only open a single file, while a program capable of opening several files at the same time, or indeed several URLs at the same time will do so with %U. Oct 8, 2016 at 13:06
  • I used the mimeopen-d approach with 18.04 and used nautilus properties to then set my choice as default.
    – Elder Geek
    Jan 17, 2020 at 1:07
  • This doesn't work for text file formats
    – HackerBoss
    Mar 23, 2020 at 23:23
20

Use Ubuntu Tweak - it has a file association manager and you can choose which programs open which file types.

Instructions are on this site http://www.omgubuntu.co.uk/2011/12/new-version-of-ubuntu-tweak-released/

Best way to install is:

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

EDIT In newer versions of Ubuntu, follow Paulius's answer, the option has been added to the Properties -> Open With screen.

4
  • 2
    This should be the best answer, because at least in Ubuntu 12.10, clicking "Add" in the Open With tab, inside the Properties window, just adds the selected application to the "Recommended Applications" group ― it doesn't let you choose another program (for example, Sublime Text 2 or /usr/bin/subl, because it's a precompiled package and itś not registered).
    – AeroCross
    Nov 12, 2012 at 14:14
  • @AeroCross, this could be well documented in askubuntu wiki, hm? :)
    – psukys
    Nov 16, 2012 at 0:08
  • 1
    @AeroCross It lets you also to choose a precompiled program like Sublime Text. You just need a desktop-file with "Exec=/usr/bin/subl %f". Than you can use the properties window and open with tab.
    – TIIUNDER
    Dec 19, 2012 at 8:42
  • Now not working for Ubuntu 20.04. There is error: E: Unable to locate package ubuntu-tweak Mar 12 at 13:01
10

To associate an aplication to a MIME Type:

xdg-mime default <application> <mime-type>

works from the commandline, and is obey instantly by all GTK apps (and possibly Qt apps?). For example, to change the default PDF reader to Okular, use:

xdg-mime default okularApplication_pdf.desktop application/pdf

This is really useful for updating the default apps used by GTK when using a Qt based system without having to install any GTK-based apps.

Edit: on *buntu flavoured linuxes, the applications that can be used with this method are at /usr/share/applications/*.desktop. The known mimetypes can be found in /usr/share/applications/defaults.list.

2
  • This worked for meta-types like inode/directory (which apparently is the mimetyp e of a directory)
    – dualed
    Aug 8, 2019 at 23:01
  • 1
    This should be the accepted answer. May 14, 2020 at 18:29
6

For those looking for setting an application association for file extensions, NOT a mimetype:

Apparently, Ubuntu / Linux keeps this indirectly:

  • file extension -> MIME types
  • MIME type -> application(s) to open
  • Applications -> list of compatible MIME types

For Ubuntu (18.x), these are described in:

file extension -> MIME types

This is in files in /usr/share/mime/packages/. E.g.:

cat <<EOF | sudo tee /usr/share/mime/packages/staruml.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="application/staruml-project">
    <comment>StarUML project</comment>
    <glob pattern="*.MDJ"/>
    <glob pattern="*.mdj"/>
  </mime-type>
</mime-info>
EOF

MIME type -> application(s) to open

This is driven by ~/.local/share/applications/mimeapps.list and detailed the other answers.

[Default Applications]
echo 'application/staruml-project=staruml.desktop' >> ~/.local/share/applications/mimeapps.list
## Or, for global:
echo 'application/staruml-project=staruml.desktop' | sudo tee -a /usr/share/applications/mimeapps.list

Applications -> list of compatible MIME types

This is driven by the .desktop files in /usr/share/applications/. That file can contain a MimeType= entry with semicolon-separated list of MIME types. For instance, the EOG app has: MimeType=image/bmp;image/gif;image/jpeg;image/jpg;... etc.

cat <<EOF | sudo tee /usr/share/applications/staruml.desktop
[Desktop Entry]
Name=StarUML
Comment=StarUML
GenericName=StarUML
Exec=/sw/prog/StarUML/StarUML-3.1.0-x86_64.AppImage %U
Icon=/sw/prog/StarUML/staruml.png
Type=Application
StartupNotify=false
Categories=Development;Programming;Modeling;UML
MimeType=application/staruml-project;
EOF

This makes it a full circle. The changes take effect after running

sudo update-mime-database /usr/share/mime

and, for icons,

sudo gtk-update-icon-cache /usr/share/icons/gnome -f

Or, it may need you to logout/login.

Then, you should be able to see this:

$ mimetype .mdj
.mdj:  application/staruml-project

Reference: https://coderwall.com/p/qjda2q/create-new-mime-type-and-assign-an-icon-to-it-in-ubuntu

1
  • Excellent! The most exhaustive answer: Instead of using some tool, it explains how it works. I especially appreciate the information how to define a MIME type for an extension because that's exactly what I was looking for. FYI: It also works with .desktop files in ~/.local/share/applications/. I would prefer this dir for associating a custom command or a shell script. In this case, omit GenericName=, Icon= and Categories= and add NoDisplay=true. I advise prefixing the name with userapp-, so it can easily be distinguished from regular .desktop files.
    – Christoph
    Nov 16, 2021 at 19:00
5

I was having a similar problem with PDFs; I had installed Adobe Reader, but I couldn't get it to open them as the default application - it didn't even show up on the lists!

I checked the mimeapps.list file listed above, and it was already listed as default there.

This is what worked for me finally:

  • I right clicked on a PDF and chose "Properties." I opened the "Open with" tab.
  • Still no Adobe Reader.
  • Clicking on the "Reset" button made Adobe appear as the default, and now it works.

I guess that "Reset" was necessary after the (rather inconventional) installation to register it as the default program.

5

Here's how I did it without using the Ubuntu Tweak tool. My guide includes file type associations, so that your app will be listed in the "Recommended Applications" when right-clicking the file to see the properties. Guide as follows (I'm using 13.10 Saucy):

When you see a command, run it in terminal, of course :)

  1. cd /usr/share/applications/

  2. cp similar_program.desktop name_of_your_program.desktop

  3. gedit name_of_your_program.desktop

    • leave the [Desktop Entry] as the top line
    • modify the type (unless it's the same)
    • modify the name (can have spaces)
    • if you want to add support for the name in other languages just add a new line that says for instance:

      Name[es]=PlayonLinux Cargador de programas de Windows
      
    • modify the Exec (should just say yourprogram %f as long as it's a default install with the program in /usr/bin)

    • modify the MimeType (unless it's the same)
    • modify the Icon (again, if it's a default program installed to (/usr/bin) this should just say Icon=name_ of_your_program
    • NoDisplay=true
    • StartupNotify=true
  4. gedit ~/.local/share/applications/mimeapps.list

    In my instance I wanted to add PlayonLinux to select as a program to open .exe files, instead of always using WINE. But I wanted Wine to show up too.

    In this case, you can leave the top section [Default Applications] alone. Then find the line under [Added Associations], and change it from, in my instance

    application/x-ms-dos-executable=wine.desktop;
    

    to

    application/x-ms-dos-executable=wine.desktop;playonlinux.desktop;
    

    This way they both options will show up when I try to load a Windows .exe file.

If you right-click the properties on the file, and for instance say I eventually do want to make PlayonLinux the default for Windows .exe files, all I need to do is tell it to be set as default. And it will change. You can check the mimeapps.list (~/.local/share/applications/mimeapps.list) to double-check and you'll now see it will have replaced WINE under [Default Applications].

1
  • maybe you can try %U rather than %f: the reason is that %f will only open a single file, while a program capable of opening several files at the same time, or indeed several URLs at the same time will do so with %U. Oct 8, 2016 at 13:04
5

Discover and change default program via CLI

As naught101s' answer only presents the last bit of all the steps that I did, and supplementing/improving his post/answer with all the extra bits I have, I considered too much of a difference to his original answer. So here is yet another answer xD with the steps I did:

  1. Open a terminal:

    • A) Open a terminal (Ctrl+Alt+t) and navigate to the directory where you have a file you are interested in changing the default application for.

    or

    • B) With the directory open in Nautilus click on the "down arrow" of the folder name and select the option Open in Terminal. A terminal window will appear already in that directory as base.

      Nautilius:Open Folder in Terminal

  2. Discover MimeType of file: Find out which MimeType is associated to your filetype with the xdg-mime tool.

    $ xdg-mime query filetype testimg.png
    image/png
    
  3. Discover current associated default program: For reference (in case you want to revert to what was originally there): You can query which default application is currently associated to this mime-type.

    Note: You can get extended info where it looks for the using the local Environmental debug parameter "XDG_UTILS_DEBUG_LEVEL=2 xdg-mime query default image/png".

    $ xdg-mime query default image/png 
    org.gnome.eog.desktop
    
  4. Discover programs that support specific MimeType: Now using the find command we search for .desktop files (shortcuts to installed software) which have indicated that they support this MimeType.

    The -exec <command> '{}' ';' executes grep to search for the text "image/png" within each match of .desktop file found from find.

    $ find /usr/ ~/ /snap/ /var/ /etc/ -iname "*.desktop" -type f -exec grep -il image/png '{}' ';' 2> /dev/null
    /usr/share/applications/org.gnome.eog.desktop
    /usr/share/applications/display-im6.q16.desktop
    /usr/share/applications/firefox.desktop
    /snap/pinta-james-carroll/4/meta/gui/pinta.desktop
    /snap/pinta-james-carroll/4/usr/share/applications/pinta.desktop
    /snap/pinta-james-carroll/5/meta/gui/pinta.desktop
    /snap/pinta-james-carroll/5/usr/share/applications/pinta.desktop
    /snap/kde-frameworks-5-core18/32/usr/share/kf5/kmoretools/presets-kmoretools/shutter.desktop
    /var/lib/snapd/desktop/applications/pinta-james-carroll_pinta.desktop
    
  5. Set new default program: Indentify the .desktop shortcut associated to the software you want to set as default and set it.

    $ xdg-mime default pinta.desktop image/png
    
1
  • $ xdg-mime query default text/html -> bluejeans-v2.desktop grrrrr....
    – Richard
    Dec 17, 2021 at 18:36
2

For Dolphin (KDE), right click the file to get a Properties window. Under Type is a button for File Type Options, where you can modify filename extensions. Add the application if it's not in the bottom list. To make it default, move the application you want to the top of the Application Preference Order list.

Screenshot from a more detailed guide:

enter image description here

1

If the System Info > Default Program doesn't work, then you could try right clicking on whatever video/movie file you want to play, then click Open With, and then select VLC.

If you want further details, this may help you: http://www.johannes-eva.net/change-the-default-application-ubuntu-linux

1

I tried a number of these solutions with null result.
Until I went to

  1. Show Applications
  2. Settings
  3. Default Applications

and set VLC to open video and music files...
Then it worked.
(although the mime icon is still not VLC, but it opens in VLC now...)

1
  • I see recommendations to install older versions of Nautilus. Perhaps that might work. The current version in Gnome, changes the mime type in the .config directory (when you click Change Default Program,) but then ignores it. The setting in 2) Settings above does change the behavior, however.
    – kakunka
    Dec 3, 2018 at 23:26
0

Thanks to Alvin Liang, I propose to solve this problem by

  1. installing Nemo (a fork of a former Nautilus version) via apt-get install nemo,
  2. clicking on a file of interest, choose "Open with ..." and "Other application ...",
  3. choose one of the applications in the list and click "Set as default".

Then, you can use Nautilus again with the updated file associations. It is not the most convenient solution, however, it avoids fiddling around with config files in the back.

If possible, please, upvote the following Launchpad issue to get this fixed in Nautilus!

0

For KDE Plasma users (e.g. KUbuntu), open settings -> Personalization -> Applications -> File Associations. Then enter the relevant file type in the search bar and select the type under Known Types. Then add/move your desired default application to the top of the preference order.

screenshot

-1

System Settings -> Details -> Default Applications

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .