Gra*_*ent 16 arch-linux defaults freedesktop
当我没有defaults.listand 时mimeapps.list,xdg-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按预期打开文本文件。
我的问题:
xdg-open当没有defaults.listand时如何确定要启动哪个应用程序mimeapps.list?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