文件关联存储在哪里?

Sta*_*ann 75 files mime-type file-association

Ubuntu 或任何其他 Linux 系统如何存储文件关联?

/etc/asscociations什么文件什么的吗?

我知道我可以右键单击文件并通过“打开方式”更改它,但我只是想知道它是如何在内部存储的。

dv3*_*0ea 70

文件管理器(默认为 Nautilus)使用文件的MIME 类型来确定使用哪个程序打开它。安装应用程序时,它可以指定可以打开的 MIME 类型以及用于打开 .desktop 文件中的文件的命令,该文件位于 .desktop 文件中/usr/share/applications。这是用于菜单、桌面快捷方式等的文件。

例如,GIMP 有以下 .desktop 文件:

[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;
Run Code Online (Sandbox Code Playgroud)

查看MimeType字段 - 这列出了支持的 MIME 类型。该Exec字段告诉系统使用命令gimp-2.7 %U,用要打开的文件替换 '%U'。(注意 GIMP 2.7 是我从 PPA 安装的版本,因此高于 Ubuntu 存储库中的当前版本)。

安装应用程序包后,系统会将此 MIME 类型数据提取到更易于访问的数据库中,因为如果每次打开文件时都查看每个 .desktop 文件将花费太长时间。

这会告诉系统哪些应用程序用于该 MIME 类型并提供“打开方式”列表中的应用程序。默认值在别处定义。该文件/usr/share/applications/defaults.list提供系统默认值的信息。除非您另有选择,否则这些是您“打开”文件时使用的应用程序。

  • 是的。`sudo update-desktop-database` 见 http://jarrpa.net/2011/10/28/creating-custom-url-handlers-in-ubuntu-11-04-11-10-gnome-3-0/ (12认同)
  • 更改`/usr/share/applications``.desktop` 文件中的MIME 类型后,是否有命令重新创建该MIME 数据库以查看新关联的作用? (8认同)
  • Ubuntu 似乎遵循 freedesktop.org:http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html,一个 **awesome** 项目。 (2认同)

小智 26

为了补充 dv3500ea 的出色答案,我想添加一些有关更改关联时会发生什么的信息。

虽然 defaults.list(您可以通过键入“locate defaults.list”找到)提供与每种 MIME 类型关联的应用程序列表,但您所做的任何自定义都存储在您的主目录中的 ~/.local/共享/应用程序/mimeapps.list。因此,如果您添加或删除关联,或者更改默认关联,则会更新此文件。

http://library.gnome.org/admin/system-admin-guide/stable/上的 GNOME 桌面系统管理指南似乎没有讨论 mimeapps.list,但我在http://live.gnome上找到了以下描述.org/SysAdminGuideUpdate

mimeapps.list 位于 $XDG_DATA_DIRS/applications 中。其目的是在应用程序中添加或删除 mime 关联。当用户在“打开方式”对话框中进行更改时,nautilus 会写入 ~/.local/share/applications/mimeapps.list。


小智 22

我发现在我的系统(Debian Jessie)上还有~/.config/mimeapps.list一个我不小心创建的关联,用于使用 gedit 打开特定文件类型。纠正此问题的标准方法(默认应用程序设置,Thunar 的open with属性)都没有反映这一点,但 gedit 是默认应用程序。

我能够从中删除该行~/.config/mimeapps.list,现在正确的应用程序打开了该文件。

  • 从 ubuntu 15.04 开始,用户特定的修改也存储在 `~/.config/mimeapps.list` 中。 (3认同)
  • 更准确地说,`mimeapps.list` 可以位于以下搜索路径中的任何位置:https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html (3认同)
  • 谢谢,您不小心帮助我修复了 Firefox 在 Gedit 中打开所有内容的问题。在 openSUSE 13.2 上,我删除了“application/octet-stream=org.gnome.gedit.desktop;”这一行。:) (2认同)

war*_*iuc 11

我能够设置这样的关联:

xdg-mime default xnview.desktop image/jpeg
Run Code Online (Sandbox Code Playgroud)

您还可以删除关联并执行其他操作: man xdg-mime

我不需要跑sudo update-desktop-database


Jim*_* He 10

在 Ubuntu 18.04 上,我发现优先顺序如下,从最强到最弱:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list(“使用其他应用程序打开”将更新此内容)
  4. ~/.local/share/applications/mimeapps.list
  5. 在兼容应用程序的注册表中遇到的第一个匹配项是从和中存在的文件mimeinfo.cache生成的,并且可以使用 重新生成。.desktop/usr/share/applications/usr/local/share/applicationsupdate-desktop-database
  6. (没用过)/etc/gnome/defaults.list

  • 它接缝“最强”意味着更上层,`~/.config/mimeapps.list` AFAIK覆盖`/usr/share/applications/defaults.list`。 (2认同)

Ido*_*nts 8

我找到了有关默认关联的链接,它可能会有所帮助。 https://wiki.archlinux.org/index.php/Default_Applications
全局关联:

/usr/share/applications/mimeapps.list
Run Code Online (Sandbox Code Playgroud)

每个用户关联:

~/.local/share/applications/mimeapps.list
Run Code Online (Sandbox Code Playgroud)

语法如下:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
Run Code Online (Sandbox Code Playgroud)

[Added Associations]部分用于指定优先级递减的首选(默认)应用程序。这意味着desktopfile1是最受青睐的,而desktopfileN是最不受欢迎的
[Removed Associations]部分用于显式删除任何以前继承的关联。

  • 如果你用 `defaults.desktop` 替换 `mimeapps.desktop`,这个答案是完全可以的 (5认同)
  • 这来自 **archlinux** 站点,不一定适用于 Ubuntu,`/usr/share/applications/mimeapps.list` 不存在。 (2认同)

小智 7

创建一个文件truecrypt.desktop~/.local/share/applications有以下行:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes
Run Code Online (Sandbox Code Playgroud)

然后编辑文件~/.local/share/applications/mimeapps.list并添加以下行:

application/octet-stream=truecrypt.desktop
Run Code Online (Sandbox Code Playgroud)

通过运行以下命令,我发现了 Truecrypt 的 MIME 类型:

file --mime-type -b <any truecrypt filename>
Run Code Online (Sandbox Code Playgroud)


Cir*_*郝海东 5

mimeapps.list 搜索路径

其他人提到了这个文件,但没有人准确解释它的位置。

freedesktop.org 标准在https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html说:

该文件的查找顺序如下:

$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list             user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list             sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list  for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list             for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list    distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list              distribution-provided defaults
Run Code Online (Sandbox Code Playgroud)

然后这些环境变量的默认值在https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html 中给出:

  • $XDG_DATA_HOME$HOME/.local/share
  • $XDG_CONFIG_HOME$HOME/.config
  • $XDG_DATA_DIRS: 无,附加到 XDG_DATA_HOME
  • $XDG_CONFIG_DIRS: 无,附加到 XDG_CONFIG_HOME

旧版本的 Ubuntu 可能不会检查~/.config,因此请确保您也尝试一下~/.local/share

命令如:

 xdg-settings set default-web-browser chromium-browser.desktop
 xdg-settings get default-web-browser
Run Code Online (Sandbox Code Playgroud)

将自动编辑这些文件。