xdg-open 默认应用程序行为

Gra*_*ent 16 arch-linux defaults freedesktop

当我没有defaults.listand 时mimeapps.listxdg-open打开text/plainwith gvim。但是,当我创建defaults.list/usr/share/applications/,并添加以下几行:

[Default Applications]
text/plain=emacs.desktop
Run Code Online (Sandbox Code Playgroud)

它用 Firefox 打开文本文件。

但是,如果我移动/usr/share/applications/defaults.list~/.local/share/applications/mimeapps.list,它会emacs按预期打开文本文件。

我的问题:

  1. xdg-open当没有defaults.listand时如何确定要启动哪个应用程序mimeapps.list
  2. 为什么xdg-open在我简单地写时使用 Firefox /usr/share/applications/defaults.list

我正在使用 Arch Linux。

mic*_*ael 27

如果xdg-open用于打开应用程序,则使用xdg-mime用于为给定的 mime 类型设置默认应用程序(通常,安装 xdg-utils 会为您提供 xdg-mime 和相关程序)。

例如,要查看给定文件的“文件类型”(mime 类型,如果您愿意):

$ xdg-mime query filetype tmp.txt
text/plain

$ xdg-mime query filetype foo.pdf 
application/pdf

$ xdg-mime query filetype $PWD
inode/directory
Run Code Online (Sandbox Code Playgroud)

示例更改打开目录的默认文件管理器(可以选择 caja.desktop(默认为 mint)、nautilus.desktop(ubuntu)等:

$ xdg-mime default Thunar.desktop inode/directory
Run Code Online (Sandbox Code Playgroud)

还有 locate -i foo.desktop验证它foo.desktop确实存在。

更重要的是,为了查看默认文本编辑器是什么,

$ xdg-mime  query default text/plain 
gedit.desktop
Run Code Online (Sandbox Code Playgroud)

要使用不同的默认文本编辑器(再次验证“.desktop”文件是否存在):

$ locate -i vim.desktop
/usr/share/applications/gvim.desktop

$ xdg-mime default gvim.desktop text/plain
Run Code Online (Sandbox Code Playgroud)

现在,双击“foo.txt”(在您的 GUI 文件管理器中)或运行xdg-open foo.txt将使用gvim而不是gedit

故障排除:确保可以找到给定应用程序的“.desktop”文件,因为它必须与xdg-mime实用程序一起使用;例如,

$ xdg-mime default emacs text/plain 
xdg-mime: malformed argument 'emacs', expected *.desktop
Run Code Online (Sandbox Code Playgroud)

此外,如果“.desktop”文件不存在,这将无法按预期正常工作:

$ locate -i emacs.desktop
(none)

$ xdg-mime default emacs.desktop text/plain  # won't work
Run Code Online (Sandbox Code Playgroud)

实际的 emacs“.desktop”文件(在我的环境中):

$ locate -r 'emacs.*\.desktop'
/usr/share/applications/emacs24.desktop

$ xdg-mime default emacs24.desktop text/plain  # does work
Run Code Online (Sandbox Code Playgroud)

另见:https : //wiki.archlinux.org/index.php/xdg-open

  • 多年后,但谢谢!一些开发人员在 wine 中开了一个非常糟糕的笑话,他一定认为“如果你真的想要回一些 Windows 的痛苦,你应该拥有一切,永远不要怀旧!” 因为所有 X11 程序在打开文本文件时都会启动记事本克隆。从应用程序打开文件对我来说很少见,但记事本真的很痛苦。在你的帮助下,我得到了一个 gvim。 (5认同)