2020-05-12

можно ли в linux отрыть pdf-файл?

у меня давно есть проблемы с открытием PDF-файлов.
меня невероятно бесит pdfjs, потому что он реально тормозной, с херовым поиском, плюс на многомониторной конфигурации то его использовать вот совершенно не в красную армию.

но его отключать я уже привык (about:configp dfjs.disabled)

в новой уеб*нте новая напасть - теперь скачанный в firefox PDF открывается непойми чем:
если скачивать в темпы для открытия - открывает нормальным okular,
но если скачать, а затем нажать "открыть" - открывается с помощью LibreOffice Draw...

долго безуспешно искал в чем проблема:
* xdg-open всегда открывает okular,
* mime в /etc/mailcap указывает на okular,
* при этом gnome default apps (а ведь сраный firefox использует много компонентов говнома) говорит что надо использовать evice (которого у меня к счастью нет).

дальше стало хуже: изза косяков firefox с javascript решил поставить еще один хром - brave-browser.
и тут все стало зашибись-весело: теперь PDF сохраненные в firefox стали открываться pdfjs в brave! (с оговоркой что brave перешел на новый сорт говна для рендеринга pdf с помощью js - pdfium https://github.com/brave/brave-browser/issues/3846). а после отключения pdfjs - скачаные в firefox pdf при открытие скачиваются brave (слава богу не из инета, brave ведь не дикари писали, качают из локального пути ~/Downloads в ~/Downloads).

так как это стало за гранью пришлось разбираться.

так как очевидно что проблема связана с mime грешил на `mime-support`. к счастью у них есть man и нормальный исходный код(update-mime - скрипт на perl, причем удивительно легко читаемый).
у них есть способ определения приоритетов разных прог.
однако, его применение не дало результатов - в базе mime mailcap и так основным был okular...

но у меня уже была такая проблема лет десять назад, когда при установке приложений в wine обновлялся локальный кеш mime пользователя, и он был приоритетнее системных mime...
ключевым словом был mimeinfo.cache. такой файлик в системы нашелся:
/usr/share/applications/mimeinfo.cache
в нем для pdf действительно был список в следующем порядке: brave-browser; libreoffice-draw; okular.

разовая правка файлика проблему решила, но не надолго - он периодически "компилируется". но кто и как его заполняет найти сразу не удалось - в отличии от большинства других вариантов (xdg/mailcap) этот файл не принадлежит ни одному пакету, и нет в man/apropos db.

поиски через "что его обновляет" позволили найти dpkg trigger на добавление .desktop файла приложения в /usr/share/applications на некий desktop-file-utils/noawait
в .desktop есть декларация MimeTypes обрабатываемых приложением. а desktop-file-utils - тот самый пакет с мапингом pdf на несуществующий evince. но как оказалось в нем есть еще `update-desktop-database`, компилирующий все найденые .desktop-файлы в mimeinfo.cache...
в отличии от mime-support документации здесь нет, весь man содержит только инфу что update-desktop-database выполняет update базы desktop, и что есть 2 опции - "тише"(--quiet) и "громче"(--verbose).

потому пошел искать исходники. и нашел
https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/blob/master/src/update-desktop-database.c

по сравнению с этой сраной лапшей perl код из mime-support - проще литературного английского.
стало понятно что update-desktop-database полагается исключительно на алфавитный порядок файлов на файловой системе. потому brave выигрывает у crome, который выигрывал бы у evice, который выигрывал бы у libreoffice, и в конце списка был бы okular.
способов влияния кроме как править системные .desktop-файлы и удалять из них MimeTypes похоже нет.

но кто же написал это дерьмище?
автором оказылся некий https://www.linkedin.com/in/havoc/


удивительно, но этот индивид - очередной сотрудник конторы зла redhat, один из лидеров самого говенного рабочего окружения gnome, и один из создателей организации по созданию говенных заброшенных велосипедов freedesktop... не иначе как совпадение...