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-open
hace.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.desktop
yinkscape.desktop
en esa carpeta contienenMimeType=[…]application/pdf;[…]
.El
mimeinfo.cache
se genera automáticamente a partir de los tipos mime enumerados en los.desktop
archivos 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-database
hace algo diferente que necesitabaupdate-desktop-database ~/.local/share/applications
.xdg-open file.pdf
abre 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.cache
respectivos*.desktop
. La línea de entradamimeinfo.cache
esapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;
. Supongo que FF toma el primer artículo. ¿Pero cómoxdg-open
sabe que quiero a Evince?strace
, descubrí que lasxdg-open
llamadasgnome-open
y lasgnome-open
lecturas/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-open
ya 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.desktop
en mi~/.local/share/applications/defaults.list
. (Tenga en cuenta quedefaults.list
se fusionó enmimeapps.list
versiones 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#applications
se 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-mailcap
utilidad 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.order
y 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/mailcap
y 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.order
existe 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 mailcap
yman mailcap.order
.Tenga en cuenta que algunas aplicaciones usan utilidades genéricas (como
x-www-browser
opager
) en lugar de la detección de la aplicación preferida. Es posible que deba usarupdate-alternatives
un 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
),PAGER
yBROWSER
. Son compatibles consensible-browser
y otras herramientas, a menudo más específicas (por ejemplo,git commit
usosEDITOR
yVISUAL
).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 found
etc. 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