Da dove Firefox ottiene le applicazioni "predefinite" per l'apertura dei file?


12

Di default, Firefox (33.0) sul mio FreeBSD 11.0-CURRENT ha l'applicazione predefinita per l'apertura dei file PDF impostata su Inkscape. Firefox ricorda la mia scelta precedente, evince , nel "Cosa dovrebbe fare Firefox con questo file?" dialogo, quindi fino a poco tempo fa ero solo confuso da dove provenisse questa configurazione, ma per lo più l'ho ignorato perché mi riguardava a malapena.

Di recente, tuttavia, ho iniziato a utilizzare Zotero come database di letteratura. Zotero funziona come un plug-in di Firefox e ignora le scelte fatte nelle mie preferenze di Firefox per aprire i file PDF con evince o chiedermi cosa fare con loro, e li apre semplicemente usando Inkscape. Questo mi ha fatto provare a seguire questo particolare elemento di configurazione di Firefox, ma non sono riuscito a trovare dove è impostato quel valore predefinito.

Non sono riuscito a trovare la stringa Inkscape(o inkscape) in nessun file relativo a Firefox nella mia directory home.



Il mio default di Firefox è impostato su Font-Viewer.
utente

Risposte:


14

Un collegamento a una "domanda simile" ( comportamento delle applicazioni predefinite di xdg-open - ovviamente non correlato, ma alcune sperimentazioni hanno dimostrato che il comportamento è effettivamente equivalente a quello di xdg-open) mi ha portato più in profondità nella tana del coniglio. Sebbene Firefox non faccia affidamento o erediti le regole da, xdg-openutilizza i file delle specifiche MIME proprio come xdg-openfa.

Su base utente, il comportamento di apertura MIME è configurato dal file delle specifiche ~/.local/share/applications/mimeapps.list.

Per me, questo file contiene solo alcuni protocolli ragionevoli e file HTML (e simili) collegati userapp-Firefox-??????.desktop, ma potresti facilmente aggiungere una riga come

application/pdf=evince.desktop

per risolvere quel problema in base all'utente. Se il file non esiste ancora, assicurarsi di aggiungere un'intestazione di sezione, ad esempio

[Default Applications]
application/pdf=evince.desktop

Più in basso, i tipi mime sono definiti in /usr/local/share/applications/mimeinfo.cache(questo potrebbe essere /usr/share/…se non sei su un sistema FreeBSD), che elenca application/pdf=inkscape.desktop;evince.desktop;. Entrambi evince.desktope inkscape.desktopin quella cartella contengono MimeType=[…]application/pdf;[…].

Il file mimeinfo.cacheviene generato automaticamente dai tipi mime elencati nei .desktopfile senza un ordine ben definito, quindi dovrai rimuovere il tipo mime PDF da Inkscape e rigenerare la cache utilizzando update-mime-database, oppure generare un elenco mimeapps. (a livello globale /usr/local/share/applications/, oppure per il tuo utente in ~/.local/share/applications/mimeapps.list).


Sul mio antico Debian Linux update-mime-database, ho fatto qualcosa di diverso, avevo bisogno update-desktop-database ~/.local/share/applications.
Palec,

Inoltre, xdg-open file.pdfapre Evince (come fa Nautilus), mentre Firefox apre xpdf. Utilizzando find ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +ho scoperto che il PDF non è menzionato da nessuna parte nella configurazione dell'utente, solo nei file /usr/share/applications/mimeinfo.cachee nei rispettivi *.desktop. La linea mimeinfo.cacheè application/pdf=xpdf.desktop;evince.desktop;xournal.desktop;. Immagino che FF prenda il primo oggetto. Ma come fa a xdg-opensapere che voglio Evince?
Palec,

1
Usando strace, ho scoperto che xdg-openchiama gnome-opene gnome-openlegge /usr/share/gnome/applications/defaults.list, che è un collegamento simbolico a /etc/gnome-vfs-2.0/defaults.list, che specifica application/pdf=evince.desktop. Ovviamente, FF alla vaniglia manca di integrazione con GNOME e quindi ignora questa preferenza.
Palec,

7

In Firefox 38.8.0 ESR, sotto Debian Lenny con GNOME 2, ho scoperto che l'applicazione associata tramite XDG (descritta nella risposta dall'OP ) viene utilizzata solo quando si apre un file scaricato da Download nella libreria.

E anche lì, l'implementazione fornisce risultati incoerenti xdg-openin quanto ignora i percorsi specifici di GNOME (nel mio caso /usr/share/gnome/applications/defaults.list, che è un link simbolico a /etc/gnome-vfs-2.0/defaults.list). Ho dovuto specificare application/pdf=evince.desktopnel mio ~/.local/share/applications/defaults.list. (Nota che è defaults.liststato unito nelle mimeapps.listversioni più recenti di XDG.)

Invece di XDG, le funzionalità di metamail (mailcap) vengono utilizzate per risolvere l'applicazione associata per i seguenti casi d'uso:

  • apertura del file scaricato dal pannello di download (visualizzato dopo aver premuto il pulsante di download nella barra degli strumenti)
  • applicazione predefinita nel menu a discesa nella finestra di dialogo per il download dei file
  • applicazione predefinita nel menu a discesa in Preferenze → Applicazioni ( about:preferences#applications)

La preferenza in about:preferences#applicationsviene utilizzata durante la navigazione verso un URL con quel tipo di contenuto, a meno che il download non sia forzato.

Mailcap è un meccanismo più vecchio di XDG e ha le sue radici nell'e-mail, da cui proviene anche MIME. L' run-mailcaputilità è analoga a xdg-open. La sua configurazione comprende tre file (in precedenza decrescente):

  • ~/.mailcap - voci dell'utente
  • /etc/mailcap.order - specifica di ordinazione delle voci a livello di sistema
  • /etc/mailcap - voci a livello di sistema (stesso formato delle voci utente)

Insieme producono un elenco di voci di una riga che specificano l'applicazione da utilizzare per un determinato tipo MIME. Le voci sono abbinate dall'alto verso il basso, quindi ciò che viene prima ha la precedenza.

Per apportare una modifica a livello di sistema delle voci precedenti, è necessario modificare /etc/mailcap.ordered eseguire update-mime.

Per sovrascrivere alcune voci o specificare le proprie, a livello di sistema, è necessario modificare la sezione superiore (intesa per voci create manualmente) di /etc/mailcaped eseguire update-mime. Vedi i commenti nella sezione in alto.

Per le voci e le sostituzioni dell'utente, utilizzare ~/.mailcap. Le modifiche hanno effetto immediato. No ~/.mailcap.orderesiste; se si desidera modificare la precedenza delle voci, riordinarle fisicamente (se presenti ~/.mailcap) o sovrascriverle con la versione preferita (se presenti /etc/mailcap).

Vedi man update-mime, man mailcape man mailcap.order.

Si noti che alcune applicazioni utilizzano utilità generiche (come x-www-browsero pager) invece del rilevamento dell'applicazione preferita. Potrebbe essere necessario utilizzare update-alternativesun meccanismo simile per scegliere l'implementazione preferita di un'utilità generica nella distribuzione. Oppure, per sostituire un'alternativa preferita a livello di sistema per un utente specifico, impostare variabili di ambiente come EDITOR(o VISUAL) PAGERe BROWSER. Sono supportati da sensible-browsere altri strumenti spesso più specifici (ad es. git commitUsi EDITORe VISUAL).


1
Questa risposta è ancora valida in Firefox Quantum (64.0). Tuttavia, mailcap funziona meglio di firefox reale, quindi non puoi fare completamente affidamento su run-mailcap --debug --norun. Ho una voce come questa: application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'". Firefox quindi invoca sh downloaded_file.pdf. Sulla mia console vedo quindi, tra l'altro, /tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not foundecc. Questo comportamento rimarrà per sempre, a meno che qualcuno non lo risolva. Vedi Mozilla Bugzilla .
u_Ltd.

1
Quindi, al fine di creare un'esperienza coerente per i suoi utenti, un amministratore che distribuisce una combinazione di Debian con Gnome, dovrebbe impostare le impostazioni predefinite mime usando non meno di 4 utility: update-mime(per aggiornare mailcap), xdg-settings(per aggiornare xdg-open), gio(per aggiornare gnome-open) e update-alternatives(per aggiornare le cosiddette utility generiche). E ovviamente non dovrebbe dimenticare di gestire le impostazioni sia a livello di sistema sia per ciascun utente separatamente (probabilmente è meglio bloccare la capacità dell'utente di modificare le impostazioni predefinite) ... - ah, e anche il file handlers.json di FF: mzl.la/1xKrLAq
zenlord
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.