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.

Halim
  • 1,351
  • 1
    have a look at http://libre-software.net/change-the-default-application-linux-mint-ubuntu/ – DJCrashdummy Oct 08 '16 at 12:20
  • 4
    as comment below says ... Please vote up this change request to give sanity to how application defaults are set https://bugs.launchpad.net/hundredpapercuts/+bug/1413283 – Scott Stensland Nov 16 '17 at 19:05
  • for specific file extensions, see https://askubuntu.com/questions/1180012/how-to-change-default-program-for-files-ending-in-one-extension – HackerBoss Mar 24 '20 at 01:30

15 Answers15

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

Boris
  • 4,932
psukys
  • 3,590
  • 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 '14 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 07 '14 at 15:15
  • 9
    Added bug report for this usability issue - https://bugs.launchpad.net/hundredpapercuts/+bug/1413283 – anatoly techtonik Jan 21 '15 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 '15 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 '15 at 13:59
  • @PauliusŠukys When I click on the application which I want to set as default and then on set as default,the already default application is highlighted again .What's my mistake? – Rahul Raj Dec 06 '15 at 08:13
  • This changes the default application for all application of a certain type (or something like that). If for instance I want to change only the application that opens .txt (and not other extensions such as .wl) is there any way to do this? See https://askubuntu.com/questions/1180012/how-to-change-default-program-for-files-ending-in-one-extension. – Kvothe Nov 20 '19 at 09:11
  • @Kvothe The answer from OndraZizka addresses this, although it is underappreciated since there are so many other answers. Your question may help to draw more attention to this, I will add the details there – HackerBoss Mar 24 '20 at 01:01
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
MaxNoe
  • 165
  • can you please give an example of the format? – dapias Dec 04 '15 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 '16 at 15:57
  • 8
    mimeapps.list can be put in many directories, full search path at: https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html I prefer XDG_CONFIG_HOME which is just ~/.config/mimeapps.list and has higher precedence. – Ciro Santilli OurBigBook.com Jan 19 '17 at 09:08
  • 1
    I have no file in ~/.local/share/applications – alhelal May 21 '18 at 06:12
  • is there an easy way to determine what the .desktop alias is for a given application? For example, Android Studio. – payne Sep 23 '22 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.

Ugo Hed
  • 659
  • 1
  • 11
  • 16
  • 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. – DJCrashdummy Oct 08 '16 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 '20 at 01:07
  • This doesn't work for text file formats – HackerBoss Mar 23 '20 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.

Sman789
  • 1,703
  • 1
  • 15
  • 23
  • 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 '12 at 14:14
  • @AeroCross, this could be well documented in askubuntu wiki, hm? :) – psukys Nov 16 '12 at 00: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 '12 at 08:42
  • Now not working for Ubuntu 20.04. There is error: E: Unable to locate package ubuntu-tweak – Anton Samokat Mar 12 '24 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.

Pablo Bianchi
  • 15,657
naught101
  • 1,582
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

zx485
  • 2,426
  • 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 '21 at 19:00
6

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
    
Pablo Bianchi
  • 15,657
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.

Redbeard
  • 51
  • 1
  • 3
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].

David Foerster
  • 36,264
  • 56
  • 94
  • 147
user251256
  • 71
  • 1
  • 2
  • 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. – DJCrashdummy Oct 08 '16 at 13:04
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

qwr
  • 2,802
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...)

zx485
  • 2,426
kakunka
  • 59
  • 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 03 '18 at 23:26
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

Icedrake
  • 3,695
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!

mfg
  • 1,277
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

DBear
  • 241
-1

System Settings -> Details -> Default Applications

daniel
  • 1