我在没有桌面环境的情况下运行 Debian Jessie(我使用平铺窗口管理器 i3)并且喜欢使用xdg-open
首选应用程序快速打开文件。不过,我在为 PDF 文件设置首选应用程序时遇到了一个持续的问题。简而言之,这是我的问题:
$ xdg-mime query filetype ~/Downloads/document.pdf
application/pdf
$ xdg-mime query default application/pdf
/usr/share/applications/qpdfview.desktop
$ xdg-open ~/Downloads/document.pdf
[opens gimp!]
Run Code Online (Sandbox Code Playgroud)
任何想法都将不胜感激 - 这已经困扰了我大约一年。我曾经设法(暂时)修复它的唯一方法是直接编辑mimeinfo.cache
并gimp
从application/pdf
记录中删除对 的引用。
是的,/usr/share/applications/qpdfview.desktop
存在并包含qpdfview
二进制文件的正确位置。(确实,这个 .desktop 文件在我手动编辑时使用mimeinfo.cache
。)
在 Debian 中xdg-open
(通过xdg-mime
)不遵循我更喜欢使用的mailcap
规范run-mailcap
。是否有一些系统的方法来xdg-open
跟踪mailcap
条目?理想情况下,比修改xdg-open
脚本以始终调用run-mailcap
.
Debian(从 9.5 开始)有几个系统用于设置默认应用程序,或者更具体地说,关联文件扩展名、MIME 类型和程序(或程序操作)。在这个答案中简要回顾了它们。粒度最大的两个主要(就 MIME 关联而言)是
mailcap
系统更多地针对邮件代理和终端环境(或与桌面无关)。在这个答案中有很好的描述。我更喜欢使用第二个 mailcap 系统,因为它的通配符mailcap.order
方法可以非常方便地自动将应用程序与其支持的所有(或部分)MIME 类型相关联,并且还可以区分给定 MIME 类型的查看器和编辑器。该系统也与系统更新紧密相关,即更新包不会改变关联顺序。
上面提到的两种方法有不同的入口点
xdg-open
run-mailcap
或其别名 ( view
, edit
)但是,不同的程序调用不同的入口点,所以结果可能不一致。我正在努力实现这一目标。
xdg-open
可能会倒退 run-mailcap
经检查,如果桌面处于活动状态/usr/bin/xdg-open
,xdg-utils-1.1.1-1+deb9u1
它似乎xdg-open
会尝试使用xdg-mime
(在非常一般的意义上,不一定是桌面环境),否则它可能会回退(run-mailcap
如果它可用)。
# ... line …
Run Code Online (Sandbox Code Playgroud)