У меня никогда не было проблем с открытием файлов pdf до недавнего времени. Затем я захотел почитать о пакете xcolor для TeX и ввел следующую команду:
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'!"
Я использую оконный менеджер i3 в Ubuntu 21.04, а мои $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, и она исключила каталоги по умолчанию.
В соответствии сСпецификация XDG, по умолчанию установлено значение "/usr/local/share:/usr/share", а мои настройки переопределяли их, поэтому база данных MIME по умолчанию в /usr/share/mime/freedesktop.org.xml не считывалась системой обнаружения MIME.
Поскольку ошибочная настройка добавила несколько каталогов, связанных с flatpak, я, должно быть, добавил эту настройку в связи с тестированием flatpak, но я не помню, чтобы делал что-либо подобное, так что, возможно, эта настройка была добавлена в мой файл config.fish без моей ведома.
В любом случае, я надеюсь, что это поможет кому-то в будущем.