Linux 如何决定默认应用程序?

Ani*_*Dev 6 linux mime-types file-association

我知道每个可以打开文件的程序在 下都有一个桌面条目/usr/share/applications,并且每个 mimetype 的默认值存储在/usr/share/applications/defaults.list和 中~/.local/share/applications/mimeapps.list。在我的系统上,更新这些列表的命令是update-mime-database. 但是,如果安装了多个可以处理该文件的应用程序,我无法在 google 上找到有关该程序如何决定哪个应用程序成为默认应用程序的答案。我问是因为最近在我的系统上安装 Geany 时,所有源代码文件都开始在 Geany 中打开,而不是在我的常规文本编辑器中打开,我想知道如何选择用 Geany 替换我的常规编辑器。另外,我知道我可以手动将每个文件更改回我的常规编辑器,但是有没有办法为它可以打开的所有类型的文件提供某个程序的默认值?本质上就像 Windows 的默认应用程序管理器,您可以在其中查看任何程序可以打开的所有文件类型,并选择或取消选择它们。

我也知道该xdg-mime实用程序,但我似乎不是在多个可能的程序之间进行选择以打开文件,或者将某个程序的所有文件类型重新注册为默认值。

zag*_*san 4

首先,Linux(操作系统)不会在您所描述的内容中选择任何内容(因此标题相当离题),它要么是您单击文件的应用程序,要么是桌面环境根据您的选择做出选择逻辑和信息。

你提到了 update-mime-database,它通过一些谷歌搜索导致了 Gnome,特别是这个页面:

https://developer.gnome.org/shared-mime-info-spec/ (这只是其副本:http ://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info -spec-latest.html )

每个希望为 MIME 数据库做出贡献的应用程序都会将一个以应用程序命名的 XML 文件安装到三个 /packages/ 目录之一中(取决于用户请求安装应用程序的位置)。安装、卸载或修改此文件后,应用程序必须运行 update-mime-database 命令,该命令由 freedesktop.org 共享数据库提供。

update-mime-database 传递了包含 packages 子目录的 mime 目录,该子目录被修改为其唯一参数。它扫描packages子目录中的所有XML文件,组合其中的信息,并创建许多输出文件。

这是问题所在:

如果这些文件中的信息发生冲突,则列表中较低目录中的信息优先。任何名为 Override.xml 的文件都优先于同一包目录中的所有其他文件。这可以由允许用户编辑数据库的工具使用,以确保用户的更改生效。

因此,可能是因为 Geany 恰好出现在“列表中较低的位置”,所以它具有优先权。我猜想,这里的较低位置可能意味着任何内容,从各个文件的字母顺序到某些预定义的应用程序列表之间的顺序。

该页面还描述了文件的格式,并且还提到可能可用于操作数据库的其他工具(特别是 Override.xml)。至于是否存在这样的工具可能值得另一个问题。

编辑:这个关于使用的答案mimeopen可能也对您有帮助,即使它可能不适用于您选择的特定文件管理器: https: //superuser.com/a/573488/243625