Answers:
文件管理器(默认为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
提供了系统默认值的信息。除非另有选择,否则这些都是“打开”文件时使用的应用程序。
sudo update-desktop-database
见jarrpa.net/2011/10/28/...
/usr/local/share/applications
。我认为gtk在默认情况下也出现在那。它在我的系统上运行,但是自Ubuntu 7.04左右以来已升级(未重新安装)。
为了补充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。
mimeapps.list
会被中的条目覆盖defaults.list
。
~/.local/share/applications/mimeapps.list
运行诸如pcmanfm之类的进程,无需重新启动即可获取更改。(mplayer.desktop只是运行的mplayer我有一个从旧的mplayer躺在附近安装在/ usr /地方,我想,如果有IDK。MimeType=list;
需要与否。
mimeapps.list
可以在下面的搜索路径的任何地方:specifications.freedesktop.org/mime-apps-spec/...
我发现在我的系统(Debian Jessie)上~/.config/mimeapps.list
,还有一个我不小心创建的关联,用以使用gedit打开特定文件类型。纠正此问题的标准方法(默认的应用程序设置,Thunar的open with property)都没有反映这一点,但是gedit是默认的应用程序。
我能够从中删除该行~/.config/mimeapps.list
,现在正确的应用程序打开了该文件。
~/.config/mimeapps.list
。
mimeapps.list
可以在下面的搜索路径的任何地方:specifications.freedesktop.org/mime-apps-spec/...
我发现此链接与默认关联有关,可能会有所帮助。
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是最不优选的。
[已删除的关联]部分用于显式删除任何以前继承的关联。
/usr/share/applications/mimeapps.list
不存在。
mimeapps.desktop
为defaults.desktop
创建一个文件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>
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
将自动编辑这些文件。
对于所有用户:
/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标准的组(在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
每个查看器的文件(在我的情况下为Ristretto,Geeqie和GThumb),提取MIME定义(由开头MimeType=
,然后包含一个以分号分隔的列表),删除(先前匹配的)开头标签,并每行将列表分成一个条目。 sort -u
然后删除多余的行,然后将它们xdg-mime
设置为新的默认值。
(如果要在运行之前对其进行测试,请更改xargs
为xargs echo
,它将打印结果命令,而不是运行它。)
该技术应适用于您希望为目标应用程序回收的任何内容。您甚至不需要创建一个新.desktop
文件(可以使用现有文件)。我做了这一额外的步骤,因此当我不可避免地更改图像预览器之间的忠诚度时,我只需要更改那个文件。
在Ubuntu 18.04上,我发现优先顺序如下,从最强到最弱:
~/.local/share/applications/defaults.list
/usr/share/applications/defaults.list
~/.config/mimeapps.list
(“使用其他应用程序打开”将对此进行更新)~/.local/share/applications/mimeapps.list
mimeinfo.cache
的兼容的应用程序,这是从所生成的注册表.desktop
文件存在于/usr/share/applications
和/usr/local/share/applications
,并且可以使用可以再生update-desktop-database
。/etc/gnome/defaults.list
/usr/share/applications
.desktop
文件中的MIME类型后,是否有命令重新创建该MIME数据库以查看正在使用的新关联?