Por defecto, Firefox (33.0) en mi FreeBSD 11.0-CURRENT tiene la aplicación predeterminada para abrir archivos PDF configurada en Inkscape. Firefox recuerda mi elección anterior, por ejemplo , en "¿Qué debe hacer Firefox con este archivo?" diálogo, por lo que hasta hace poco estaba confundido de dónde provenía esta configuración, pero en su mayoría lo ignoré porque apenas me preocupaba.
Sin embargo, recientemente comencé a usar Zotero como mi base de datos de literatura. Zotero se ejecuta como un complemento de Firefox e ignora las elecciones realizadas en mis preferencias de Firefox para abrir archivos PDF con evidencia o preguntarme qué hacer con ellos, y simplemente los abre usando Inkscape. Esto me hizo intentar seguir este elemento de configuración particular de Firefox, pero no pude encontrar dónde está establecido ese valor predeterminado.
No pude encontrar la cadena Inkscape(o inkscape) en ningún archivo relacionado con Firefox en mi directorio de inicio.
fuente

Respuestas:
Un enlace a una "pregunta similar" ( comportamiento de las aplicaciones predeterminadas de xdg-open , obviamente no relacionado, pero cierta experimentación mostró que el comportamiento es realmente equivalente al de
xdg-open) me llevó a lo más profundo. Si bien Firefox no se basa ni hereda las reglasxdg-open, usa los archivos de especificación MIME tal como loxdg-openhace.En función del usuario, el archivo de especificación configura el comportamiento de apertura MIME
~/.local/share/applications/mimeapps.list.Para mí, este archivo contiene solo unos pocos protocolos razonables y archivos HTML (y similares) conectados
userapp-Firefox-??????.desktop, pero podría agregar fácilmente una línea comopara resolver ese problema por usuario. Si el archivo aún no existe, asegúrese de agregar un encabezado de sección, como
Más profundo, los tipos mime se definen en
/usr/local/share/applications/mimeinfo.cache(esto puede ser/usr/share/…si no está en un sistema FreeBSD), que sí enumeraapplication/pdf=inkscape.desktop;evince.desktop;. Ambosevince.desktopyinkscape.desktopen esa carpeta contienenMimeType=[…]application/pdf;[…].El
mimeinfo.cachese genera automáticamente a partir de los tipos mime enumerados en los.desktoparchivos sin un orden bien definido, por lo que tendrá que eliminar el tipo mime PDF de Inkscape y regenerar el caché usandoupdate-mime-database, o generar un mimeapps.list (globalmente en/usr/local/share/applications/, o para su usuario en~/.local/share/applications/mimeapps.list).fuente
update-mime-databasehace algo diferente que necesitabaupdate-desktop-database ~/.local/share/applications.xdg-open file.pdfabre Evince (al igual que Nautilus), mientras que Firefox abre xpdf. Utilizandofind ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +, descubrí que el PDF no se menciona en ninguna parte de la configuración del usuario, solo en los archivos/usr/share/applications/mimeinfo.cacherespectivos*.desktop. La línea de entradamimeinfo.cacheesapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;. Supongo que FF toma el primer artículo. ¿Pero cómoxdg-opensabe que quiero a Evince?strace, descubrí que lasxdg-openllamadasgnome-openy lasgnome-openlecturas/usr/share/gnome/applications/defaults.list, que es un enlace simbólico/etc/gnome-vfs-2.0/defaults.list, que especificaapplication/pdf=evince.desktop. Obviamente, Vanilla FF carece de la integración de GNOME y, por lo tanto, ignora esta preferencia.En Firefox 38.8.0 ESR, bajo Debian Lenny con GNOME 2, descubrí que la aplicación asociada a través de XDG (descrita en la respuesta del OP ) se usa solo al abrir un archivo descargado desde Descargas en la Biblioteca.
E incluso allí, la implementación da resultados inconsistentes
xdg-openya que ignora las rutas específicas de GNOME (en mi caso/usr/share/gnome/applications/defaults.list, que es un enlace simbólico a/etc/gnome-vfs-2.0/defaults.list). Tuve que especificarapplication/pdf=evince.desktopen mi~/.local/share/applications/defaults.list. (Tenga en cuenta quedefaults.listse fusionó enmimeapps.listversiones más recientes de XDG).En lugar de XDG, las capacidades de metamail (mailcap) se utilizan para resolver la aplicación asociada para los siguientes casos de uso:
about:preferences#applications)La preferencia en
about:preferences#applicationsse utiliza cuando se navega a una URL con ese tipo de contenido, a menos que la descarga sea forzada.Mailcap es un mecanismo más antiguo que XDG y tiene sus raíces en el correo electrónico, de donde también proviene MIME. La
run-mailcaputilidad es análoga axdg-open. Su configuración comprende tres archivos (en precedencia decreciente):~/.mailcap- entradas de usuario/etc/mailcap.order- especificación de pedido de entradas de todo el sistema/etc/mailcap- entradas de todo el sistema (mismo formato que las entradas de usuario)Juntos producen una lista de entradas de una línea que especifican la aplicación que se utilizará para cualquier tipo MIME. Las entradas coinciden de arriba hacia abajo, por lo que lo que viene primero tiene prioridad.
Para realizar un cambio de precedencia en todo el sistema, debe editar
/etc/mailcap.ordery ejecutarupdate-mime.Para anular algunas de las entradas o especificar la suya propia, en todo el sistema, debe editar la sección superior (destinada a entradas creadas manualmente) de
/etc/mailcapy ejecutarupdate-mime. Vea los comentarios en la sección superior.Para entradas de usuario y anulaciones, use
~/.mailcap. Los cambios surten efecto inmediatamente. No~/.mailcap.orderexiste si desea cambiar la prioridad de las entradas, reordenarlas físicamente (si están en~/.mailcap) o anularlas con la versión preferida (si están en/etc/mailcap).Ver
man update-mime,man mailcapyman mailcap.order.Tenga en cuenta que algunas aplicaciones usan utilidades genéricas (como
x-www-browseropager) en lugar de la detección de la aplicación preferida. Es posible que deba usarupdate-alternativesun mecanismo similar para elegir la implementación preferida de una utilidad genérica en su distribución. O, para anular una alternativa preferida en todo el sistema para un usuario específico, establezca variables de entorno comoEDITOR(oVISUAL),PAGERyBROWSER. Son compatibles consensible-browsery otras herramientas, a menudo más específicas (por ejemplo,git commitusosEDITORyVISUAL).fuente
application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'". Firefox luego invocash downloaded_file.pdf. Luego veo en mi consola, entre otros,/tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not foundetc. Este comportamiento permanecerá para siempre, a menos que alguien solucione esto. Ver Mozilla Bugzilla .update-mime(para actualizar mailcap),xdg-settings(para actualizar xdg-open),gio(para actualizar gnome-open) yupdate-alternatives(para actualizar las llamadas utilidades genéricas). Y, por supuesto, no debe olvidarse de administrar la configuración tanto en todo el sistema como para cada usuario por separado (probablemente lo mejor sea bloquear la capacidad del usuario para cambiar los valores predeterminados) ... - ah, y el archivo handlers.json de FF también: mzl.la/1xKrLAq