文件关联存储在哪里?
Ubuntu或任何其他Linux系统如何存储文件关联?
是否有一些/etc/asscociations
文件或什么?
我知道我可以右键单击文件并通过“打开方式”进行更改,但我只是想知道它是如何在内部存储的。
文件管理器(默认情况下为Nautilus)使用文件的MIME类型来确定要打开它的程序。 安装应用程序时,它可以指定可以打开的MIME类型以及用于打开位于/usr/share/applications
中的.desktop文件中的文件的命令。 这是用于菜单,桌面快捷方式等的文件。
例如,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
提供系统默认值的信息。 除非您另行选择,否则这些是您打开文件时使用的应用程序。
为了补充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。
我发现在我的系统(Debian Jessie)上还有一个~/.config/mimeapps.list
,它有一个我意外创建的关联,用gedit打开一个特定的文件类型。 没有任何标准的纠正方法(默认的应用程序设置,Thunar的open with property)都反映了这一点,但gedit是默认的应用程序。
我能够从~/.config/mimeapps.list
删除该行,现在正确的应用程序打开该文件。
使用以下行在~/.local/share/applications
创建文件truecrypt.desktop
:
[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
我通过以下运行此命令找到了mime类型的Truecrypt:
file --mime-type -b
我能够设置这样的关联:
xdg-mime default xnview.desktop image/jpeg
您还可以删除关联并执行其他操作: man xdg-mime
我不需要运行sudo update-desktop-database
。
我发现此链接涉及默认关联,它可能会有所帮助。 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是最不受欢迎的 。
[Removed Associations]部分用于显式删除任何先前inheritance的关联。
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
:none,附加到XDG_DATA_HOME
-
$XDG_CONFIG_DIRS
:none,附加到XDG_CONFIG_HOME
较旧版本的Ubuntu可能无法检查~/.config
,因此请确保您尝试~/.local/share
。
命令如:
xdg-settings set default-web-browser chromium-browser.desktop xdg-settings get default-web-browser
将自动编辑这些文件。
对于所有用户:
/usr/share/applications/defaults.list
每个用户都有一个配置文件来覆盖这些默认值:
〜/的.config / mimeapps.list
另请参阅https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html ,了解可能用于覆盖违约的地方。
您必须知道要更改其关联的文件的mime类型。
还可以使用以下命令在命令行中更改所有关联:
XDG-MIME
Freedesktop.org (以前称为X桌面组,因此是“XDG”的缩写)是目前正在推动X标准的团体( 在维基百科上了解更多信息 )。
warvariuc的回答已经提到xdg-mime用法如:
xdg-mime default xnview.desktop image/jpeg
在大量使用图像编辑器和观看者之后,我最终得到了不同图像类型的不同观看者几乎没有一致性,尤其是在罕见的图像类型中。
我使用上面的命令并将其分配给由图像查看器控制的每种MIME类型,然后通过克隆其中一个来创建一个新的image-viewer.desktop
(这是可选的,您只能重复使用您喜欢的)。 接下来,我手动validation了所有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
文件(在我的情况下为Ristretto , Geeqie和GThumb ),提取MIME定义(以MimeType=
开头,然后包含以分号分隔的列表),删除(先前匹配的)前言标签,并将列表拆分为每行一个条目。 sort -u
然后删除冗余行,然后将它们交给xdg-mime
来设置新的默认值。
(如果要在运行之前测试它,请将xargs
更改为xargs echo
,它将打印生成的命令而不是运行它。)
此技术适用于您要为目标应用回收的任何内容。 您甚至不需要创建新的.desktop
文件(您可以使用现有文件)。 我做了那个额外的步骤,这样当我不可避免地改变我对图像预览器之间的忠诚时,我只需要改变那个文件。