xdg-打开默认应用程序行为

xdg-打开默认应用程序行为

当我没有defaults.listand时mimeapps.listxdg-open打开text/plainwith gvim。但是当我创建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.list和时如何确定启动哪个应用程序mimeapps.list
  2. 为什么xdg-open我只是写东西却用firefox /usr/share/applications/defaults.list

我正在使用 Arch Linux。

答案1

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

答案2

#!/bin/sh

FILETYPE=$(xdg-mime query filetype $1)
APP=$( find /usr/share -type f -name "*.desktop" -printf "%p\n" | rofi -threads 0 -dmenu -i -p "select default app")
APP=$(basename -- $APP)
xdg-mime default "$APP" "$FILETYPE"
echo "$APP set as default application to open $FILETYPE"

在文件上使用此脚本,然后它会要求您选择用于此文件类型的默认应用程序。

我使用rofi,但您可以根据您选择的模糊取景器进行调整。之后,您可以使用xdg-open.

相关内容