По умолчанию Firefox (33.0) на моем FreeBSD 11.0-CURRENT имеет приложение по умолчанию для открытия PDF-файлов, установленное на Inkscape. Firefox помнит свой предыдущий выбор, Evince , в «Что должен делать Firefox с этим файлом?» диалоговое окно, так что до недавнего времени я был просто смущен, откуда взялась эта конфигурация, но в основном игнорировал ее, потому что она едва касалась меня.
Однако недавно я начал использовать Zotero в качестве своей литературной базы данных. Zotero работает как плагин Firefox и игнорирует выбор, сделанный в моих настройках Firefox, открывать PDF-файлы с помощью evince или спрашивать, что с ними делать, и просто открывает их с помощью Inkscape. Это заставило меня попытаться проследить за этим конкретным элементом конфигурации Firefox, но я не смог найти, где установлено это значение по умолчанию.
Я не смог найти строку Inkscape
(или inkscape
) в любом файле, связанном с Firefox, в моем домашнем каталоге.
источник
Ответы:
Ссылка на «похожий вопрос» ( поведение приложений по умолчанию в xdg-open - явно не связано, но некоторые эксперименты показали, что поведение действительно эквивалентно таковому из
xdg-open
) привела меня глубже в кроличью нору. Хотя Firefox не полагается и не наследует правилаxdg-open
, он использует файлы спецификации MIME так же, какxdg-open
и.Для пользователя поведение при открытии MIME настраивается файлом спецификации
~/.local/share/applications/mimeapps.list
.Для меня этот файл содержит всего несколько разумных протоколов и HTML (и аналогичных) файлов, к которым можно подключиться
userapp-Firefox-??????.desktop
, но вы можете легко добавить строку вродечтобы решить эту проблему для каждого пользователя. Если файл еще не существует, обязательно добавьте заголовок раздела, например
Глубже вниз, типы MIME определены в
/usr/local/share/applications/mimeinfo.cache
(это может быть,/usr/share/…
если вы не находитесь в системе FreeBSD), который делает списокapplication/pdf=inkscape.desktop;evince.desktop;
. Обаevince.desktop
иinkscape.desktop
в этой папке содержатсяMimeType=[…]application/pdf;[…]
.Он
mimeinfo.cache
автоматически генерируется из типов MIME, перечисленных в.desktop
файлах, без какого-либо четко определенного порядка, поэтому вам придется либо удалить тип PDF MIME из Inkscape иupdate-mime-database
сгенерировать кэш с помощью , либо сгенерировать mimeapps.list (либо глобально/usr/local/share/applications/
, либо для вашего пользователя в~/.local/share/applications/mimeapps.list
).источник
update-mime-database
что-то другое, мне нужноupdate-desktop-database ~/.local/share/applications
.xdg-open file.pdf
открывается Evince (как и Nautilus), а Firefox открывает xpdf. Используя,find ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +
я обнаружил, что PDF нигде не упоминается в пользовательской конфигурации, только в/usr/share/applications/mimeinfo.cache
соответствующих*.desktop
файлах. Линия вmimeinfo.cache
томapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;
. Я думаю, FF берет первый предмет. Но откудаxdg-open
мне знать, что я хочу Эвинса?strace
, я обнаружил, чтоxdg-open
вызываетgnome-open
иgnome-open
читает/usr/share/gnome/applications/defaults.list
, что является символической ссылкой/etc/gnome-vfs-2.0/defaults.list
, которая указываетapplication/pdf=evince.desktop
. Очевидно, что vanilla FF не имеет интеграции с GNOME и поэтому игнорирует это предпочтение.В Firefox 38.8.0 ESR в Debian Lenny с GNOME 2 я обнаружил, что приложение, связанное с помощью XDG (описано в ответе OP ), используется только при открытии загруженного файла из раздела « Загрузки» в библиотеке.
И даже там реализация дает результаты, несовместимые с тем,
xdg-open
что игнорирует специфичные для GNOME пути (в моем случае/usr/share/gnome/applications/defaults.list
это символическая ссылка/etc/gnome-vfs-2.0/defaults.list
). Я должен был указатьapplication/pdf=evince.desktop
в моем~/.local/share/applications/defaults.list
. (Обратите внимание, что этоdefaults.list
было объединено вmimeapps.list
более поздних версиях XDG.)Вместо XDG возможности метапочты (mailcap) используются для разрешения ассоциированного приложения в следующих случаях:
about:preferences#applications
)Параметр in
about:preferences#applications
используется при переходе к URL-адресу с этим типом содержимого, если загрузка не является принудительной.Mailcap является механизмом старше XDG и имеет свои корни в электронной почте, откуда и MIME.
run-mailcap
Утилита аналогичнаxdg-open
. Его конфигурация состоит из трех файлов (в порядке убывания):~/.mailcap
- пользовательские записи/etc/mailcap.order
- общесистемная спецификация заказа записей/etc/mailcap
- общесистемные записи (тот же формат, что и записи пользователя)Вместе они создают список записей в одну строку, которые указывают приложение, которое будет использоваться для любого данного типа MIME. Записи сопоставляются сверху вниз, поэтому приоритет имеет то, что находится на первом месте.
Чтобы сделать общесистемное изменение приоритета записей, вам нужно отредактировать
/etc/mailcap.order
и запуститьupdate-mime
.Чтобы переопределить некоторые записи или указать свои собственные, для всей системы, вам нужно отредактировать верхний раздел (предназначенный для записей, созданных вручную)
/etc/mailcap
и запуститьupdate-mime
. Смотрите комментарии в верхнем разделе.Для пользовательских записей и переопределений используйте
~/.mailcap
. Изменения вступают в силу немедленно. Нет~/.mailcap.order
существует; если вы хотите изменить приоритет записей, измените их физический порядок (если они есть~/.mailcap
) или переопределите их предпочитаемой версией (если они есть/etc/mailcap
).Видите
man update-mime
,man mailcap
иman mailcap.order
.Обратите внимание, что некоторые приложения используют общие утилиты (такие как
x-www-browser
илиpager
) вместо обнаружения предпочтительного приложения. Возможно, вам придется использоватьupdate-alternatives
или подобный механизм для выбора предпочтительной реализации универсальной утилиты в вашем дистрибутиве. Или, чтобы переопределить общесистемную предпочтительную альтернативу для конкретного пользователя, установите переменные среды, такие какEDITOR
(илиVISUAL
)PAGER
иBROWSER
. Они поддерживаютсяsensible-browser
и другими, часто более конкретными инструментами (например,git commit
используетEDITOR
иVISUAL
).источник
application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'"
. Затем Firefox вызываетsh downloaded_file.pdf
. На своей консоли я вижу, среди прочего/tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not found
и т. Д. Такое поведение останется навсегда, если кто-то не исправит это. Смотри Mozilla Bugzilla .update-mime
(для обновления mailcap),xdg-settings
(для обновления xdg-open),gio
(обновить gnome-open) иupdate-alternatives
(обновить так называемые общие утилиты). И, конечно, он / она не должен забывать управлять настройками как для всей системы, так и для каждого пользователя в отдельности (вероятно, лучше всего блокировать возможность пользователя изменять настройки по умолчанию) ... - а, а также файл FF handlers.json: mzl.la/1xKrLAq