直到最近我才在開啟 pdf 檔案時遇到問題。然後,我想閱讀 TeX 的 xcolor 套件並輸入以下命令:
texdoc xcolor
這一直有效,在我喜歡的 pdf 檢視器 qpdfview 中開啟文件。但現在,它嘗試使用 qpdfview 打開它,但 qpdfview 顯示錯誤:
Could not open '/usr/share/texlive/texmf-dist/doc/latex/xcolor/xcolor.pdf'.
在終端機上,我收到以下錯誤訊息:
Unknown MIME type: ""
"Could not match file type of '/usr/share/texlive/texmf-dist/doc/latex/xcolor/xcolor.pdf'!"
我在 Ubuntu 21.04 下運行 i3 平鋪視窗管理器,並且我的 $XDG_CURRENT_DESKTOP 和 $DESKTOP_SESSION 設定為「i3」。
因此,在一個已知良好的 pdf 文件中,我輸入:
$ mimetype TrigLocal.pdf
TrigLocal.pdf: text/plain
儘管,
$ file --mime-type
application/pdf
正確的。
所以,我嘗試了
$ xdg-open TrigLocal.pdf
gio: file:///home/ded/TeXexamples/TrigLocal.pdf: No application is registered as handling this file
好吧,也許 gio 設定不正確:
$ gio mime TrigLocal.pdf
No default applications for “TrigLocal.pdf”
我嘗試設定處理程序
$ xdg-mime default qpdfview.desktop application/pdf
但是當我查詢它時:
$ xdg-mime query default application/pdf
qpdfview-chromium.desktop
這是一種變體,但我沒有設定。無論如何,它對 xdg-open 沒有影響:
$ xdg-open TrigLocal.pdf
gio: file:///home/ded/TeXexamples/TrigLocal.pdf: No application is registered as handling this file
我不知道出了什麼問題,而且我在任何地方都找不到明確的指導,至少沒有一個有效的指導。
在 ubuntu 下將文件類型與處理程序相關聯的整個生態系統讓我感到困惑,所以我希望有一個很好的概述教程來解釋以下之間的關係:
MIME 類型 xdg-open gio
以及任何其他與幫助我修復非 Gnome、非 KDE 系統相關的內容。
更新
根據@steeldriver的建議,我跑了:
$ mimetype --debug TrigLocal.pdf
> Data dirs are: /home/ded/.local/share, /var/lib/flatpak/exports/share /home/ded/.local/share /flatpak/exports/share
> Checking inode type
> Checking globs for basename 'TrigLocal.pdf'
> Checking for extension '.pdf'
> Checking globs for basename 'triglocal.pdf'
> Checking for extension '.pdf'
> File exists, trying default method
TrigLocal.pdf: text/plain
我在 ~/.local/share 中沒有看到任何有趣的內容,但我確實看到了這一點:
$ cat ~/.local/share/applications/mimeapps.list
[Default Applications]
application/pdf=qpdfview.desktop
application/html=google-chrome.desktop
text/html=google-chrome.desktop
x-scheme-handler/http=google-chrome.desktop
x-scheme-handler/https=google-chrome.desktop
x-scheme-handler/about=google-chrome.desktop
x-scheme-handler/unknown=google-chrome.desktop
[Added Associations]
application/pdf=evince.desktop;zathura-pdf-poppler.desktop;
答案1
我發現了問題。運行 mimetype --debug 給出了提示,但我沒有看到它。 (感謝@steeldriver)我在同一個檔案上嘗試了與 root 相同的命令,它給出了正確的答案。
事實證明,由於某種原因,環境變數 XDG_DATA_DIRS 的設定進入了我的 shell 配置文件,並且排除了預設目錄。
根據XDG 規範,預設情況下它設定為“/usr/local/share:/usr/share”,並且我的設定覆蓋了這些,因此/usr/share/mime/freedesktop.org.xml 處的預設mime 資料庫未被讀取進入啞劇檢測系統。
由於錯誤的設置添加了一些與flatpak 相關的目錄,我必須添加與嘗試flatpak 相關的設置,但我不記得做過任何這樣的事情,所以也許該設置是在我背後添加到我的config.fish 文件中的。
無論如何,我希望這對將來的人有幫助。