Ubuntu或其他Linux系统如何存储文件关联?
是否有一些“/etc/asscociations”文件之类的东西?
我知道我可以右键单击文件并通过“打开方式”更改它,但我只是好奇它是如何在内部存储的。
是否有一些“/etc/asscociations”文件之类的东西?
我知道我可以右键单击文件并通过“打开方式”更改它,但我只是好奇它是如何在内部存储的。
/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存储库中的当前版本更高)。/usr/share/applications/defaults.list
提供了系统默认值的信息。除非您另有选择,否则在“打开”文件时将使用这些应用程序。mimeapps.list位于$XDG_DATA_DIRS/applications中。它的目的是向应用程序添加或删除mime关联。当用户在“打开方式”对话框中进行更改时,nautilus会写入~/.local/share/applications/mimeapps.list。
mimeapps.list
被defaults.list
中的条目覆盖了。 - feeela~/.local/share/applications/mimeapps.list
文件中将s/vlc/mplayer/进行替换,并且运行中的进程如pcmanfm可以在不重启的情况下应用这些更改。(mplayer.desktop只是运行mplayer的一个快捷方式。我猜这是因为我之前在/usr/local安装了旧版mplayer时留下的一个文件。我不确定是否需要MimeType=list;
这一行。) - Peter Cordesmimeapps.list
可以位于以下搜索路径的任何位置:https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html - Ciro Santilli OurBigBook.comqtfm
无情地覆盖了~/.local/sahre/applications/mimeapps.list
,而不管我做了什么 :-(。QtFM的发布说明称此为“支持”。 - NeilG~/.config/mimeapps.list
,其中有一个我意外创建的关联,用gedit打开特定文件类型。没有任何标准的纠正方法(默认应用程序设置,Thunar的“打开方式”属性)反映了这一点,但gedit是默认应用程序。~/.config/mimeapps.list
中删除该行,现在正确的应用程序打开了该文件。~/.config/mimeapps.list
中。 - DJCrashdummymimeapps.list
可以出现在以下搜索路径的任何位置:https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html - Ciro Santilli OurBigBook.comxdg-mime default xnview.desktop image/jpeg
man xdg-mime
我不需要运行sudo update-desktop-database
。qtfm
覆盖了~/.local/share/applications/mimeapps.list
,但不幸的是,无论mimeapps.list
中是否有条目,xdg-mime query default application/pdf
仍然显示mupdf.desktop
,而且qtfm
仍然覆盖了我的mimeapps.list
,并不遵守xdg-mime
的设置。我想知道qtfm
读取默认值的其他位置在哪里? - NeilG~/.local/share/applications/defaults.list
/usr/share/applications/defaults.list
~/.config/mimeapps.list
("使用其他应用程序打开"将更新此文件)
~/.local/share/applications/mimeapps.list
mimeinfo.cache
注册表中找到的第一个匹配项,这些匹配项是从/usr/share/applications
和/usr/local/share/applications
中的.desktop
文件生成的,并且可以使用update-desktop-database
重新生成。/etc/gnome/defaults.list
/usr/share/applications/defaults.list
文件中,一行上有几个条目,但只有第一个应用程序会显示为打开文件的默认选项(如果没有被覆盖的话)。我不知道其他的为什么会出现在那里。 - Alex Martian~/.config/mimeapps.list
会覆盖/usr/share/applications/defaults.list
。 - Alex Martian~/.config/mimeapps.list
中确实有(更好的)信息,但qtfm
不尊重它,并且仍然从某个其他神秘位置覆盖了~/.local/share/applications/mimeapps.list
。 - NeilG/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 是最不受欢迎的。/usr/share/applications/mimeapps.list
文件不存在。 - guntbertmimeapps.desktop
替换为defaults.desktop
,这个答案就完全可以。 - szx~/.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
file --mime-type -b <any truecrypt filename>
mimeapps.list
搜索路径
其他人已经提到了这个文件,但没有精确解释它的位置。
freedesktop.org标准在https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.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
对于所有用户:
每个用户都有一个配置文件,用于覆盖这些默认设置:/usr/share/applications/defaults.list
请参考https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html,了解可能用于覆盖默认设置的位置。~/.config/mimeapps.list
xdg-mime
Freedesktop.org(以前称为X桌面组,因此有“XDG”缩写)是目前推动X标准的团体,可以在这里了解更多(请参阅维基百科)。
warvariuc的回答已经提到了xdg-mime的使用方法,例如:
xdg-mime default xnview.desktop image/jpeg
经过与图像编辑器和查看器的多次尝试,我最终得到了针对不同图像类型的不同查看器,几乎没有一致性,特别是在较罕见的图像类型中。
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
文件,提取MIME定义(以MimeType=
开头,然后包含一个分号分隔的列表),删除(之前匹配的)前缀标签,并将列表拆分为每行一个条目。sort -u
然后删除重复的行,然后将它们传递给xdg-mime
来设置新的默认值。xargs
更改为xargs echo
,它会打印出结果命令而不是运行它。)
/usr/share/applications
中的.desktop
文件中的MIME类型后,是否有命令可以重新创建MIME数据库以查看新的关联生效? - Redsandrosudo update-desktop-database
请参考 http://jarrpa.net/2011/10/28/creating-custom-url-handlers-in-ubuntu-11-04-11-10-gnome-3-0/ - NoBugs/usr/local/share/applications
。我认为gtk默认也会在那里查找。在我的系统上确实如此,但它自Ubuntu 7.04以来已经升级(而不是重新安装)。 - Peter Cordessudo update-desktop-database ~/.local/share/applications/
,因为.desktop文件是本地的。 - Michael~/.local/share/applications/defaults.list
文件中。 - DarkTrickqtfm
时,它都会覆盖~/.local/share/applications/mimeapps.list
文件。我在任何地方都找不到defaults.list
文件。我已经删除了所有我能找到的mimeinfo.cache
文件,但它们并没有重新生成。我确认了/usr/share/applications/mupdf.desktop
条目具有application/pdf
MIME类型。我已经重新生成了数据库。我没有/usr/local/share/applications
目录。我甚至看不到qtfm
从哪里获取它的默认设置,但当它应该支持mimeapps.list
时,我不明白"支持"怎么会涉及覆盖用户偏好设置。 - NeilG