如何在没有任何环境的情况下正确,轻松地配置xdg-open?


63

我正在使用没有任何桌面环境的 OpenBox窗口管理器。

xdg-open表现异常。它使用打开所有内容firefox

$ xdg-settings --list
Known properties:
  default-web-browser           Default web browser

我正在寻找一个简单的程序;类似于读取*.desktop文件/usr/share/applications/夹中的每个文件并自动设置xdg设置。


使用xdg-mime(的一部分xdg-utils)是使用(查询,配置)的最佳答案xdg-open。另请参见unix.stackexchange.com/questions/8793/…–
迈克尔

Answers:


24

您可以在存储库中使用perl-file-mimeinfoextra来管理模仿类型。

打开以下所有.pdf文件的示例apvlv

/usr/bin/vendor_perl/mimeopen -d $file.pdf

然后在提示符下输入应用程序:apvlv


有用。但是它只会打开文件。因此,我xdg-open未配置的xdg-open文件和使用的应用程序都不会正确打开文件。
克拉韦米尔

我不太听您的评论。什么不起作用?该-d开关设置默认。因此,如果您使用它打开fileA.pdf-那么您应该可以fileB.pdf使用自己喜欢的应用程序打开。
jasonwryan'4

1
是。mimeopen -d a.pdf为设置默认值*.pdf,但为自身设置默认值- mimeopen b.pdf有效。但是xdg-open配置保持不变,它仍然使用以下命令打开所有内容firefox:/
kravemir 2012年

3
一旦将默认值设置为mimeopenxdg-open其行为便与预期的一样-对于.pdfs,它将使用来打开它们apvlv
jasonwryan'4

1
在Lubuntu 16.04中,这对我不起作用。sudo xdg-mime default pluma.desktop text/plaintouch: cannot touch "/home/user/.local/share/applications/mimeapps.list": No such file or directory /usr/bin/xdg-mime: 807: /usr/bin/xdg-mime: cannot create /home/user/.local/share/applications/mimeapps.list.new: Directory nonexistent; /usr/bin/vendor_perl/mimeopen -d $file.txtbash: /usr/bin/vendor_perl/mimeopen: No such file or directory
Nickolai Leschov'2

62

为什么不使用xdg本身的实用程序?

使Thunar成为默认的文件浏览器,即打开文件夹的默认应用程序。

$ xdg-mime default Thunar.desktop inode/directory

将xpdf用作默认的PDF查看器:

$ xdg-mime default xpdf.desktop application/pdf

这将在您的本地MIME数据库中创建一个条目:

~/.local/share/applications/defaults.list
[Default Applications]
application/pdf=xpdf.desktop

您的PDF文件应该现在用xpdf打开。


+1,另请参阅我对相关问题的相关答案unix.stackexchange.com/questions/77136/…–
迈克尔

2
最有用的答案,谢谢。最容易了解,defaults.list因此可以根据需要手动进行编辑。
mVChr

由于某些原因xdg-mime没有进行修改defaults.list,但是手动编辑(由于此答案中的提示)可以解决问题。
Skippy le Grand Gourou

仅供参考,为此需要几个Perl依赖项,请确保已安装它们。RPM / DEB发行版通常会为您安装这些。
lzap

2
看来defaults.list现在叫mimeapps.list。请参阅Arch Wiki,以获取的有效位置列表mimeapps.list
Mateen Ulhaq

7

在Debian上,您可以以root身份使用命令

update-mime-database /usr/share/mime

shared-mime-info安装软件包。


2
我已经试过了 没用 我正在运行Arch。
克拉韦米尔

-1这特定于依赖共享mime-info的桌面环境,例如GNOME
craymichael

7

您可以使用类似的方法xdg-mime为每个.desktop文件及其包含的mimetypes 生成适当的命令,然后执行所需的文件。注意/usr/share/applications可能有子目录。

for dd in /usr/share/applications ~/.local/share/applications; do
  for d in $(ls $dd 2>/dev/null | grep "\\.desktop$"); do
    for m in $(grep MimeType $dd/$d | cut -d= -f2 | tr ";" " "); do
      echo xdg-mime default $d $m;
    done;
  done;
done

3

就像@aleb的答案一样,但是它适用于带空格的桌面文件:

find /usr/share/applications ~/.local/share/applications -iname '*.desktop' -print0 | while IFS= read -r -d $'\0' d; do
  for m in $(grep MimeType "$d" | cut -d= -f2 | tr ";" " "); do
    echo xdg-mime default "'$d'" "'$m'"
  done
done
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.