Woher bezieht Firefox die "Standard" -Anwendungen zum Öffnen von Dateien?

12

Standardmäßig ist in Firefox (33.0) unter FreeBSD 11.0-CURRENT die Standardanwendung zum Öffnen von PDF-Dateien auf Inkscape eingestellt. Firefox erinnert sich an meine vorherige Auswahl im Dialogfeld "Was soll Firefox mit dieser Datei tun?". Bis vor kurzem war ich nicht sicher , woher diese Konfiguration stammt, habe sie jedoch größtenteils ignoriert, da sie mich kaum interessierte.

Ich habe jedoch vor kurzem begonnen, Zotero als meine Literaturdatenbank zu verwenden. Zotero wird als Firefox-Plugin ausgeführt und ignoriert die in meinen Firefox-Einstellungen vorgenommenen Einstellungen zum Öffnen von PDF-Dateien mit evince oder fragt mich, was ich damit machen soll, und öffnet sie einfach mit Inkscape. Aus diesem Grund habe ich versucht, dieses spezielle Konfigurationselement von Firefox weiterzuverfolgen, konnte jedoch nicht feststellen, wo diese Standardeinstellung festgelegt ist.

Ich konnte die Zeichenfolge Inkscape(oder inkscape) in keiner Firefox-bezogenen Datei in meinem Ausgangsverzeichnis finden.

Anaphorie
quelle
Mein Firefox ist standardmäßig auf Font-Viewer eingestellt.
Benutzer

Antworten:

14

Ein Link zu einer „ähnlichen Frage“ ( Verhalten von xdg-open-Standardanwendungen - nicht offensichtlich verwandt, aber einige Experimente ergaben, dass das Verhalten tatsächlich dem von entspricht xdg-open) führte mich tiefer in den Kaninchenbau hinein. Firefox verlässt sich zwar nicht auf xdg-opendie MIME-Spezifikationsdateien und übernimmt keine Regeln von diesen xdg-open.

Auf Benutzerbasis wird das MIME-Öffnungsverhalten durch die Spezifikationsdatei konfiguriert ~/.local/share/applications/mimeapps.list.

Für mich enthält diese Datei nur ein paar vernünftige Protokolle und HTML-Dateien (und ähnliche), die damit verbunden sind userapp-Firefox-??????.desktop, aber Sie können leicht eine Zeile wie hinzufügen

application/pdf=evince.desktop

um dieses Problem auf Benutzerbasis zu lösen. Wenn die Datei noch nicht vorhanden ist, stellen Sie sicher, dass Sie eine Abschnittsüberschrift hinzufügen, z

[Default Applications]
application/pdf=evince.desktop

Weiter unten werden die MIME-Typen definiert /usr/local/share/applications/mimeinfo.cache(dies kann der Fall sein, /usr/share/…wenn Sie sich nicht auf einem FreeBSD-System befinden) application/pdf=inkscape.desktop;evince.desktop;. Beide evince.desktopund inkscape.desktopin diesem Ordner enthalten MimeType=[…]application/pdf;[…].

Das mimeinfo.cachewird automatisch aus den in den .desktopDateien aufgelisteten MIME-Typen ohne definierte Reihenfolge generiert. Sie müssen daher entweder den PDF-MIME-Typ aus Inkscape entfernen und den Cache mithilfe von neu update-mime-databasegenerieren oder eine mimeapps.list generieren (entweder global in /usr/local/share/applications/oder für Ihren Benutzer in ~/.local/share/applications/mimeapps.list).

Anaphorie
quelle
Auf meinem alten Debian-Linux update-mime-databasemachte ich etwas anderes, was ich brauchte update-desktop-database ~/.local/share/applications.
Palec
Außerdem xdg-open file.pdföffnet Evince (wie auch Nautilus), während Firefox xpdf öffnet. Unter Verwendung von find ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +fand ich, dass PDF nirgends in der Benutzerkonfiguration erwähnt wird, nur in /usr/share/applications/mimeinfo.cacheund entsprechenden *.desktopDateien. Die Zeile in mimeinfo.cacheist application/pdf=xpdf.desktop;evince.desktop;xournal.desktop;. Ich denke FF nimmt den ersten Gegenstand. Aber woher xdg-openweiß ich, dass ich Evince haben will?
Palec
1
Mit strace, entdeckte ich, dass xdg-openAnrufe gnome-openund gnome-openliest /usr/share/gnome/applications/defaults.list, die einen Symlink zu /etc/gnome-vfs-2.0/defaults.list, der angibt application/pdf=evince.desktop. Offensichtlich fehlt Vanilla FF die GNOME-Integration und ignoriert diese Präferenz.
Palec
7

In Firefox 38.8.0 ESR unter Debian Lenny mit GNOME 2 stellte ich fest, dass die über XDG verknüpfte Anwendung (beschrieben in der Antwort des OP ) nur beim Öffnen einer heruntergeladenen Datei von Downloads in der Bibliothek verwendet wird.

Und selbst dort liefert die Implementierung inkonsistente Ergebnisse, xdg-openda sie GNOME-spezifische Pfade ignoriert (in meinem Fall /usr/share/gnome/applications/defaults.listein Symlink zu /etc/gnome-vfs-2.0/defaults.list). Ich musste application/pdf=evince.desktopin meinem angeben ~/.local/share/applications/defaults.list. (Beachten Sie, dass defaults.listin verschmolzen wurde mimeapps.listin neueren Versionen von XDG.)

Anstelle von XDG werden Metamail-Funktionen (Mailcap) verwendet, um die zugeordnete Anwendung für die folgenden Anwendungsfälle aufzulösen:

  • Öffnen der heruntergeladenen Datei aus dem Download-Bereich (wird angezeigt, nachdem Sie in der Symbolleiste auf den Download-Button geklickt haben)
  • Standardanwendung im Dropdown-Menü für den Dateidownload
  • Standardanwendung in der Dropdown-Liste unter Einstellungen → Anwendungen ( about:preferences#applications)

Die Einstellung in about:preferences#applicationswird beim Navigieren zu einer URL mit diesem Inhaltstyp verwendet, sofern der Download nicht erzwungen wird.

Mailcap ist ein Mechanismus, der älter als XDG ist und seine Wurzeln in E-Mail hat, wo auch MIME herkommt. Das run-mailcapDienstprogramm ist analog zu xdg-open. Seine Konfiguration umfasst drei Dateien (in absteigender Reihenfolge):

  • ~/.mailcap - Benutzereingaben
  • /etc/mailcap.order - Bestellspezifikation für systemweite Einträge
  • /etc/mailcap - Systemweite Einträge (gleiches Format wie Benutzereinträge)

Zusammen erstellen sie eine Liste einzeiliger Einträge, die die Anwendung angeben, die für einen bestimmten MIME-Typ verwendet werden soll. Die Einträge werden von oben nach unten abgeglichen, was zuerst kommt, hat also Vorrang.

Um die Priorität von Einträgen systemweit zu ändern, müssen Sie sie bearbeiten /etc/mailcap.orderund ausführen update-mime.

Um einige der Einträge zu überschreiben oder Ihre eigenen systemweiten Einträge festzulegen, müssen Sie den oberen Abschnitt (der für manuell erstellte Einträge vorgesehen ist) von bearbeiten /etc/mailcapund ausführen update-mime. Siehe die Kommentare im oberen Abschnitt.

Verwenden Sie für Benutzereingaben und Überschreibungen ~/.mailcap. Die Änderungen werden sofort wirksam. Nein ~/.mailcap.orderexistiert; Wenn Sie die Priorität von Einträgen ändern möchten, ordnen Sie sie physisch neu an (sofern vorhanden ~/.mailcap) oder überschreiben Sie sie mit der bevorzugten Version (sofern vorhanden /etc/mailcap).

Siehe man update-mime, man mailcapund man mailcap.order.

Beachten Sie, dass einige Anwendungen allgemeine Dienstprogramme (wie z. B. x-www-browseroder pager) verwenden, anstatt die bevorzugte Anwendung zu erkennen. Möglicherweise müssen Sie update-alternativeseinen ähnlichen Mechanismus verwenden, um die bevorzugte Implementierung eines allgemeinen Dienstprogramms in Ihrer Distribution auszuwählen. Um eine systemweit bevorzugte Alternative für einen bestimmten Benutzer zu überschreiben, legen Sie Umgebungsvariablen wie EDITOR(oder VISUAL) PAGERund fest BROWSER. Sie werden von sensible-browseranderen, häufig spezifischeren Tools (z . B. git commitVerwendungen EDITORund VISUAL) unterstützt.

Palec
quelle
1
Diese Antwort ist in Firefox Quantum (64.0) noch gültig. Mailcap bietet jedoch eine bessere Leistung als Firefox, sodass Sie sich nicht vollständig auf run-mailcap --debug --norun verlassen können. Ich habe einen Eintrag wie folgt aus : application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'". Firefox ruft dann auf sh downloaded_file.pdf. Auf meiner Konsole sehe ich dann unter anderem /tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not foundusw. Dieses Verhalten bleibt für immer erhalten, es sei denn, jemand behebt dies. Siehe Mozilla Bugzilla .
u_Ltd.
1
Um eine einheitliche Benutzererfahrung für seine Benutzer zu schaffen, sollte ein Administrator, der eine Kombination von Debian und Gnome update-mimebereitstellt, xdg-settingsMIME-Standardeinstellungen mit nicht weniger als 4 Dienstprogrammen festlegen : (zum Aktualisieren von mailcap), (zum Aktualisieren von xdg-open), gio(um gnome-open zu aktualisieren) und update-alternatives(um die sogenannten generischen Dienstprogramme zu aktualisieren). Und natürlich sollte er / sie nicht vergessen, die Einstellungen systemweit und für jeden Benutzer separat zu verwalten (wahrscheinlich am besten, um die Fähigkeit des Benutzers zu blockieren, die Standardeinstellungen zu ändern) ... - ah, und auch die handlers.json-Datei von FF: mzl.la/1xKrLAq
zenlord