最近まで、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
OK、おそらく 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 の設定がシェル設定ファイルに入り、デフォルトのディレクトリが除外されていたことが判明しました。
によるとXDG仕様デフォルトでは「/usr/local/share:/usr/share」に設定されていますが、私の設定はこれらを上書きしていたため、/usr/share/mime/freedesktop.org.xml にあるデフォルトの MIME データベースが MIME 検出システムに読み込まれませんでした。
誤った設定により flatpak 関連のディレクトリがいくつか追加されたため、flatpak を試すために設定を追加したに違いありませんが、そのようなことをした覚えがないので、知らないうちに config.fish ファイルに設定が追加されたのかもしれません。
とにかく、これが将来誰かの役に立つことを願っています。