问题描述
Ubuntu或任何其他Linux系统如何存储文件关联?
有没有一些/etc/asscociations
文件?
我知道我可以右键单击文件并通过”open with”更改它,但我只是想知道它是如何在内部存储的。
最佳解决办法
文件管理器(默认情况下为Nautilus)使用文件的MIME type来确定要打开它的程序。安装应用程序时,它可以指定它可以打开的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类型,并在’Open With’列表中提供应用程序。默认值在别处定义。文件/usr/share/applications/defaults.list
提供系统默认值的信息。除非您另行选择,否则这些是’Open’文件时使用的应用程序。
次佳解决办法
为了补充dv3500ea的优秀答案,我想补充一些关于更改关联时会发生什么的信息。
虽然defaults.list(您可以通过键入’locate defaults.list’找到)提供与每种MIME类型关联的应用程序列表,但您所做的任何自定义都存储在主目录中的〜/.local /share /applications /mimeapps中.LIST。因此,如果添加或删除关联,或更改默认关联,则会更新此文件。
http://library.gnome.org/admin/system-admin-guide/stable/上的GNOME桌面系统管理指南似乎没有讨论mimeapps.list,但我在http://live.gnome.org/SysAdminGuideUpdate上找到了以下描述:
mimeapps.list is located in $XDG_DATA_DIRS/applications. Its purpose is to add or remove mime associations from applications. nautilus writes ~/.local/share/applications/mimeapps.list when the user makes changes in the “Open With” dialog.
第三种解决办法
我发现在我的系统(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 <any truecrypt filename>
第五种办法
我能够设置这样的关联:
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]部分用于显式删除任何先前继承的关联。
第七种办法
mimeapps.list
搜索路径
其他人已经提到了这个文件,但没有一个人精确地解释了它的位置。
freedesktop.org标准在https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html上说:
The lookup order for this file is as follows:
$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
将自动编辑这些文件。