xdg-open默认应用程序行为


13

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

[Default Applications]
text/plain=emacs.desktop

它使用Firefox打开文本文件。

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

我的问题:

  1. 如何xdg-open确定哪些应用程序启动时,有没有defaults.listmimeapps.list
  2. 为什么xdg-open我只写时就使用firefox /usr/share/applications/defaults.list

我正在使用Arch Linux。


1
我使用Openbox。另外,我注意到一个/usr/share/applications/mimecache.info似乎列出了默认应用程序的文件。甚至更令人困惑……
渐变

1
我在~/.config/mimeapps.list
Sam Mason

Answers:


23

如果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

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

$ xdg-mime default Thunar.desktop inode/directory

并且也要locate -i foo.desktop验证foo.desktop确实存在。

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

$ xdg-mime  query default text/plain 
gedit.desktop

要使用其他默认文本编辑器(同样,请验证“ .desktop”文件是否存在):

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

$ xdg-mime default gvim.desktop text/plain

现在,双击“ 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

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

$ locate -i emacs.desktop
(none)

$ xdg-mime default emacs.desktop text/plain  # won't work

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

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

$ xdg-mime default emacs24.desktop text/plain  # does work

另请参阅:https : //wiki.archlinux.org/index.php/xdg-open


3
多年后,但谢谢!一些开发人员在葡萄酒中开了一个很不好玩的笑话,他一定想过:“如果您真的想让Windows减轻一些痛苦,那么就应该拥有一切,永不怀旧!” 并且由于所有X11程序在打开文本文件时都会启动记事本克隆。从应用程序打开文件对我来说很少见,但记事本确实很痛。在您的帮助下,我回到了gvim。
flaschenpost
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.