文件关联存储在哪里?


67

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

是否有/etc/asscociations文件或东西?

我知道我可以右键单击文件并通过“打开方式”进行更改,但是我很好奇它的内部存储方式。

Answers:


67

文件管理器(默认为Nautilus)使用文件的MIME类型来确定使用哪个程序打开文件。安装应用程序后,它可以指定可以打开的MIME类型,以及用于打开.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;

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

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

这告诉什么应用程序的系统被用于MIME类型,然后在“打开方式”列表中提供的应用程序。默认值在其他位置定义。该文件/usr/share/applications/defaults.list提供了系统默认值的信息。除非另有选择,否则这些都是“打开”文件时使用的应用程序。


7
更改/usr/share/applications .desktop文件中的MIME类型后,是否有命令重新创建该MIME数据库以查看正在使用的新关联?
Redsandro 2012年

12
是。sudo update-desktop-databasejarrpa.net/2011/10/28/...
NoBugs

进行本地更改的更合适的位置是/usr/local/share/applications。我认为gtk在默认情况下也出现在那。它在我的系统上运行,但是自Ubuntu 7.04左右以来已升级(未重新安装)。
彼得·科德斯

2
Ubuntu的似乎遵循freedesktop.org:standards.freedesktop.org/mime-apps-spec/...,一个真棒项目。
Ciro Santilli新疆改造中心法轮功六四事件

23

为了补充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关联。当用户在“打开方式”对话框中进行更改时,鹦鹉螺会写入〜/ .local / share / applications / mimeapps.list。


1
但是使用Ubuntu 12.04时,我意识到mimeapps.list会被中的条目覆盖defaults.list
Feeela 2012年

1
在14.04上,我能够在自己的s / vlc / mplayer /中~/.local/share/applications/mimeapps.list运行诸如pcmanfm之类的进程,无需重新启动即可获取更改。(mplayer.desktop只是运行的mplayer我有一个从旧的mplayer躺在附近安装在/ usr /地方,我想,如果有IDK。MimeType=list;需要与否。
彼得·科德斯

更确切地说,mimeapps.list可以在下面的搜索路径的任何地方:specifications.freedesktop.org/mime-apps-spec/...
西罗桑蒂利新疆改造中心法轮功六四事件

18

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

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


2
谢谢,您意外地帮助我修复了Firefox在Gedit中打开所有内容的问题。在openSUSE 13.2上,我删除了带有“ application / octet-stream = org.gnome.gedit.desktop;”的行。:)
user31389'3

3
从ubuntu 15.04开始,用户特定的修改也存储在中~/.config/mimeapps.list
DJCrashdummy16年

2
更确切地说,mimeapps.list可以在下面的搜索路径的任何地方:specifications.freedesktop.org/mime-apps-spec/...
西罗桑蒂利新疆改造中心法轮功六四事件

8

我发现此链接与默认关联有关,可能会有所帮助。 https://wiki.archlinux.org/index.php/Default_Applications
用于全局关联:

/usr/share/applications/mimeapps.list

每个用户关联:

~/.local/share/applications/mimeapps.list

语法如下:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN

[Added Associations]部分用于以降低的优先级指定首选(默认)应用程序。这意味着Desktopfile1是最优选的,而DesktopfileN是最不优选的。
[已删除的关联]部分用于显式删除任何以前继承的关联。


1
这来自archlinux网站,不一定适用于Ubuntu,/usr/share/applications/mimeapps.list不存在。
guntbert

谢谢您指出这一点,但是用户在Ubuntu或其他Linux系统中说,这也表示了对他的问题的答案:P。
MusuNaji 2013年

5
如果您替换mimeapps.desktopdefaults.desktop
szx,

8

我能够这样设置一个关联:

xdg-mime default xnview.desktop image/jpeg

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

我不需要跑步sudo update-desktop-database


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

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

application/octet-stream=truecrypt.desktop

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

file --mime-type -b <any truecrypt filename>

很好的答案,因为它适用于使用kde但有几个gtk本机程序(如firefox)的用户。
naught101 '04

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

然后在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

将自动编辑这些文件。



1

Freedesktop.org(以前称为X桌面组,因此简称为“ XDG”)是当前正在推动这样的X标准的组(在Wikipedia上了解更多信息)。

warvariuc的答案已经提到xdg-mime用法,例如:

xdg-mime default xnview.desktop image/jpeg

 

经过与图像编辑器和查看器的大量交互,我最终得到了针对不同图像类型的不同查看器,它们几乎没有一致性,尤其是在稀有图像类型中。

我接受了上面的命令,并将其分配给图像查看器控制的每种MIME类型,然后image-viewer.desktop通过克隆其中一个创建了新的类型(这是可选的,您只能重用自己喜欢的类型)。接下来,我手动验证了所有MIME类型都不会与新的首选应用程序不兼容。最后,我将该应用程序设置为所有其他应用程序的MIME类型的默认设置:

sed '/^MimeType=/!d; s///; s/;/\n/g' \
  /usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \
  |xargs xdg-mime default image-viewer.desktop

这将检查.desktop每个查看器的文件(在我的情况下为RistrettoGeeqieGThumb),提取MIME定义(由开头MimeType=,然后包含一个以分号分隔的列表),删除(先前匹配的)开头标签,并每行将列表分成一个条目。 sort -u然后删除多余的行,然后将它们xdg-mime设置为新的默认值。

(如果要在运行之前对其进行测试,请更改xargsxargs echo,它将打印结果命令,而不是运行它。)

该技术应适用于您希望为目标应用程序回收的任何内容。您甚至不需要创建一个新.desktop文件(可以使用现有文件)。我做了这一额外的步骤,因此当我不可避免地更改图像预览器之间的忠诚度时,我只需要更改那个文件。


1

在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/applications,并且可以使用可以再生update-desktop-database
  6. (没用过) /etc/gnome/defaults.list
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.