如何设置默认程序?

我怎样设置默认使用的程序?

我尝试打开系统信息默认程序 → 更改我的程序,但它不起作用。

有什么建议吗?还是我应该使用终端?

我想用VLC媒体播放器替换默认的电影播放器,因为当前的电影播放器对我来说没有用。


1请点击此链接查看:http://libre-software.net/change-the-default-application-linux-mint-ubuntu/ - DJCrashdummy
3请投票支持此更改请求,以使应用程序默认设置变得更加合理: https://bugs.launchpad.net/hundredpapercuts/+bug/1413283 - Scott Stensland
有关特定文件扩展名,请参阅https://askubuntu.com/questions/1180012/how-to-change-default-program-for-files-ending-in-one-extension。 - HackerBoss
14个回答

还有另一个图形用户界面(GUI)的解决方案,对您可能会很方便;)

尝试打开您想始终由VLC播放的文件类型的属性(右键单击 -> 属性)。

选择“打开方式”选项卡,要么从列表中选择,要么添加一个(通过选择扩展程序列表中的一个或直接键入vlc作为命令)


编辑:

... 然后点击 设为默认

输入图像描述


64哇,Ubuntu 的用户界面真是够蠢的。右键点击 -> 打开方式 -> 其他应用程序 并没有显示“设为默认”... 右键点击 -> 属性 -> 使用其他应用程序 却显示了“设为默认”。 - Jeff Ward
2对于不显示在“其他”列表上的应用程序...普通用户不想编辑文件,也不应该需要添加额外的图形界面应用程序来完成这种基本操作。在我的情况下,Fritzing没有出现在与.fzz文件关联的应用程序中,并且没有按钮可以指向磁盘上的Fritzing。为什么Ubuntu团队认为编辑文本文件比通过图形界面浏览文件夹并指定应用程序更可接受呢? ...这样Ubuntu将永远无法达到桌面水平 - neu-rah
8为此可用性问题添加了错误报告 - https://bugs.launchpad.net/hundredpapercuts/+bug/1413283 - anatoly techtonik
3但是当我想使用没有通过Ubuntu软件中心或apt-get安装的应用程序时,我该怎么办呢?我从官方网站下载了Blender,但它没有被安装(我将其放在/opt目录下,并且可以通过终端访问)。我能告诉Ubuntu要使用哪个可执行文件吗? - Jacajack
@Jacajack 如果这个问题在Askubuntu.com上还没有得到答案,请提问 :) 这个特定的帖子解决了设置默认值的用例,现在你需要做的是在系统中"注册"一个程序。 - psukys
@PauliusŠukys 当我点击想要设为默认的应用程序,然后再点击设置为默认时,已经默认的应用程序再次被突出显示。我犯了什么错误? - Rahul Raj
这将更改特定类型的所有应用程序的默认应用程序(或类似的东西)。例如,如果我只想更改打开 .txt 文件的应用程序(而不是其他扩展名如 .wl),有没有办法做到这一点?请参阅 https://askubuntu.com/questions/1180012/how-to-change-default-program-for-files-ending-in-one-extension。 - Kvothe
@Kvothe OndraZizka的回答已经解决了这个问题,尽管由于其他答案太多而被低估。你的问题可能会吸引更多关注,我会在那里添加详细信息。 - HackerBoss

如果你真的很绝望,就手动编辑文件~/.config/mimeapps.list
格式:
application/TYPE=LAUNCHER.desktop

只需要在[Default Applications]部分下添加这个,如果你想要它作为默认应用程序;或者在[Added Associations]部分下添加,如果不想让它成为默认应用程序。
一些程序仍然使用现已废弃的~/.local/share/applications/mimeapps.list文件,然而,最好将其创建一个符号链接指向~/.config/mimeapps.list,从而只有一个配置文件。
$ 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

请问你能给一个格式的例子吗? - dapias
1@dapias 当你打开文件时,你会看到很多例子,你可以复制和编辑。例如:x-scheme-handler/mailto=thunderbird.desktop - amertkara
7mimeapps.list 可以放在许多目录中,完整的搜索路径请参考:https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html 我更喜欢使用 XDG_CONFIG_HOME,即 ~/.config/mimeapps.list,因为它具有更高的优先级。 - Ciro Santilli OurBigBook.com
1我在“~/.local/share/applications”中没有文件。 - alhelal
有没有一种简单的方法来确定给定应用程序的.desktop别名是什么?例如,Android Studio。 - payne

  1. 选择一:在文件所在的终端中执行以下命令

    mimeopen -d your_video.avi
    

    输出如下:

    请选择默认应用程序,用于处理类型为 application/x-ms-dos-executable 的文件
    1) vlc
    2) ...
    3) 其他...
    

    使用应用程序 #3
    使用命令:vlc %f

    如果看到 vlc,请按 1,否则选择“其他”解决方案(此情况下为 3)。然后输入应用程序名称,后面加上 %f。

  2. 选择二:通用方法

    mimeopen .avi
    

    然后按照上述步骤操作。


1也许你可以尝试使用%U而不是%f:原因是%f只能打开一个文件,而能够同时打开多个文件或多个URL的程序将使用%U来实现。 - DJCrashdummy
我在18.04版本中使用了mimeopen-d的方法,并使用Nautilus属性将我的选择设置为默认选项。 - Elder Geek
这对于文本文件格式不起作用。 - HackerBoss

使用Ubuntu Tweak - 它有一个文件关联管理器,您可以选择哪些程序打开哪些文件类型。
说明在这个网站上 http://www.omgubuntu.co.uk/2011/12/new-version-of-ubuntu-tweak-released/
最佳安装方法是:
sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

在较新的Ubuntu版本中,按照Paulius的回答进行操作,该选项已添加到“属性”->“打开方式”屏幕中。

2这应该是最好的答案,因为至少在Ubuntu 12.10中,在属性窗口的“打开方式”选项卡中点击“添加”,只会将所选应用程序添加到“推荐应用程序”组中 - 它不允许您选择另一个程序(例如Sublime Text 2或/usr/bin/subl),因为它是一个预编译包并且没有注册。 - AeroCross
@AeroCross,这个可以在askubuntu的维基上很好地记录下来,嗯? :) - psukys
1@AeroCross 它还让你可以选择预编译的程序,比如Sublime Text。你只需要一个包含 "Exec=/usr/bin/subl %f" 的桌面文件。然后你就可以使用属性窗口和打开方式选项卡了。 - TIIUNDER

关联应用程序到 MIME 类型:
xdg-mime default <application> <mime-type>

这个命令行工具可以立即被所有 GTK 应用程序(可能也包括 Qt 应用程序)所遵循。例如,要将默认的 PDF 阅读器更改为 Okular,请使用:

xdg-mime default okularApplication_pdf.desktop application/pdf

这对于在使用基于Qt系统时更新GTK默认应用程序非常有用,而无需安装任何基于GTK的应用程序。
编辑:在*buntu风格的Linux中,可以使用此方法的应用程序位于/usr/share/applications/*.desktop。 已知的MIME类型可以在/usr/share/applications/defaults.list中找到。

这适用于诸如inode/directory(显然是目录的MIME类型)的元类型。 - dualed
1这应该是被接受的答案。 - extremeaxe5

对于那些想要为文件扩展名设置应用程序关联而不是MIME类型的人来说:
显然,Ubuntu / Linux是通过间接方式实现这一点的:
- 文件扩展名 -> MIME类型 - MIME类型 -> 打开的应用程序 - 应用程序 -> 兼容的MIME类型列表
对于Ubuntu(18.x),这些信息可以在以下位置找到:
文件扩展名 -> MIME类型
这些信息存储在/usr/share/mime/packages/目录下的文件中。 例如:
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类型 -> 打开的应用程序

这是由~/.local/share/applications/mimeapps.list驱动的,并详细说明了其他答案。

[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

应用程序 -> 兼容的 MIME 类型列表
这是由 /usr/share/applications/ 中的 .desktop 文件驱动的。该文件可以包含一个以分号分隔的 MIME 类型列表的 MimeType= 条目。例如,EOG 应用程序有:MimeType=image/bmp;image/gif;image/jpeg;image/jpg;... 等等。
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

这使得它成为一个完整的循环。更改在运行后生效。
sudo update-mime-database /usr/share/mime

还有,对于图标,

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

或者,您可能需要注销/登录。

然后,您应该能够看到这个:

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

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

太好了!最详尽的答案:它不使用任何工具,而是解释了其工作原理。我特别欣赏关于如何为扩展定义 MIME 类型的信息,因为那正是我正在寻找的。顺便提一下:它还适用于 ~/.local/share/applications/ 中的 .desktop 文件。我更喜欢将此目录用于关联自定义命令或shell脚本。在这种情况下,省略 GenericName=Icon=Categories=,并添加 NoDisplay=true。我建议使用 userapp- 作为名称前缀,这样可以轻松区分普通的 .desktop 文件。 - Christoph

这就是我是如何在不使用Ubuntu Tweak工具的情况下完成的。我的指南包括文件类型关联,这样当右键单击文件查看属性时,您的应用程序将显示在“推荐应用程序”中。以下是指南(我正在使用13.10 Saucy):
当您看到一个命令时,在终端中运行它,当然 :)
  1. cd /usr/share/applications/

  2. cp similar_program.desktop name_of_your_program.desktop

  3. gedit name_of_your_program.desktop

    • [Desktop Entry] 保留在第一行
    • 修改类型(除非相同)
    • 修改名称(可以包含空格)
    • 如果您想为其他语言添加对该名称的支持,只需添加一行新的内容,例如:

      Name[es]=PlayonLinux Cargador de programas de Windows
      
    • 修改 Exec(只需写成 yourprogram %f,前提是程序默认安装在 /usr/bin 中)

    • 修改 MimeType(除非相同)
    • 修改 Icon(同样,如果是默认程序安装在 (/usr/bin),这里应该写成 Icon=name_ of_your_program
    • NoDisplay=true
    • StartupNotify=true
  4. gedit ~/.local/share/applications/mimeapps.list

    在我的情况下,我想要将PlayonLinux添加为选择打开 .exe 文件的程序,而不总是使用WINE。但我也希望Wine出现在列表中。

    在这种情况下,您可以保留顶部的部分 [Default Applications] 不变。 然后找到 [Added Associations] 下面的行, 并将其从我的例子中的

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

    修改为

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

    这样,当我尝试加载Windows的 .exe 文件时,两个选项都会显示出来。

如果你右键点击文件的属性,比如说我最终确实想要将PlayonLinux设置为Windows的默认.exe文件打开方式,我只需要告诉它设为默认即可。然后它就会改变。你可以检查mimeapps.list~/.local/share/applications/mimeapps.list)来进行双重确认,你会发现在[Default Applications]下,它已经取代了WINE。

也许你可以尝试使用%U而不是%f:原因是%f只能打开一个文件,而能够同时打开多个文件或多个URL的程序将使用%U来实现。 - DJCrashdummy

我之前也遇到了类似的PDF问题;我安装了Adobe Reader,但无法将其设置为默认应用程序 - 它甚至在列表中都没有显示出来!
我检查了上面提到的mimeapps.list文件,发现它已经被列为默认应用程序。
以下是最终解决我的方法:
  • 我右键点击一个PDF文件,选择“属性”。然后打开“打开方式”选项卡。
  • 仍然没有Adobe Reader。
  • 点击“重置”按钮后,Adobe Reader出现为默认应用程序,现在可以正常使用了。
我猜想,在(相当非传统的)安装过程中,需要通过“重置”来注册它作为默认程序。

通过命令行界面发现和更改默认程序

由于naught101的回答只提供了我所做的最后一步,而且我在他的帖子/回答中补充/改进了所有额外的细节,我认为与他原来的回答相差太大。所以这里又是另一个答案 xD,附上我所做的步骤:

  1. 打开终端:

    • A) 打开终端Ctrl+Alt+t),然后导航到您想要更改默认应用程序的文件所在的目录。

    或者

    • B) 在Nautilus中打开目录,点击文件夹名称旁边的“向下箭头”,选择在终端中打开选项。一个终端窗口将会出现在该目录下。

      Nautilius:Open Folder in Terminal

  2. 查找文件的MimeType:使用xdg-mime工具找出与您的文件类型相关联的MimeType。

    $ xdg-mime query filetype testimg.png
    image/png
    
  3. 查找当前关联的默认程序:作为参考(以防您想要恢复到原来的设置):您可以查询当前与此MimeType关联的默认应用程序。

    注意:您可以使用本地环境调试参数"XDG_UTILS_DEBUG_LEVEL=2 xdg-mime query default image/png"获取扩展信息。

    $ xdg-mime query default image/png 
    org.gnome.eog.desktop
    
  4. 查找支持特定MimeType的程序:现在使用find命令搜索已指示支持此MimeType的.desktop文件(已安装软件的快捷方式)。

    -exec <command> '{}' ';'执行grep命令,在每个匹配的.desktop文件中搜索文本"image/png"。

    $ 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. 设置新的默认程序:确定与您想要设置为默认的软件关联的.desktop快捷方式,然后进行设置。

    $ xdg-mime default pinta.desktop image/png
    

$ xdg-mime query default text/html -> bluejeans-v2.desktop 哎呀呀... - Richard

对于Dolphin (KDE)来说,右键点击文件可以打开属性窗口。在“类型”下方有一个“文件类型选项”按钮,你可以在这里修改文件名扩展名。如果应用程序不在底部列表中,可以添加它。要将其设为默认应用程序,请将所需应用程序移动到“应用程序优先顺序”列表的顶部。
更详细的指南中截图。

enter image description here