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.
quelle
Antworten:
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 aufxdg-open
die MIME-Spezifikationsdateien und übernimmt keine Regeln von diesenxdg-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ügenum 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
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;
. Beideevince.desktop
undinkscape.desktop
in diesem Ordner enthaltenMimeType=[…]application/pdf;[…]
.Das
mimeinfo.cache
wird automatisch aus den in den.desktop
Dateien aufgelisteten MIME-Typen ohne definierte Reihenfolge generiert. Sie müssen daher entweder den PDF-MIME-Typ aus Inkscape entfernen und den Cache mithilfe von neuupdate-mime-database
generieren oder eine mimeapps.list generieren (entweder global in/usr/local/share/applications/
oder für Ihren Benutzer in~/.local/share/applications/mimeapps.list
).quelle
update-mime-database
machte ich etwas anderes, was ich brauchteupdate-desktop-database ~/.local/share/applications
.xdg-open file.pdf
öffnet Evince (wie auch Nautilus), während Firefox xpdf öffnet. Unter Verwendung vonfind ~/.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.cache
und entsprechenden*.desktop
Dateien. Die Zeile inmimeinfo.cache
istapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;
. Ich denke FF nimmt den ersten Gegenstand. Aber woherxdg-open
weiß ich, dass ich Evince haben will?strace
, entdeckte ich, dassxdg-open
Anrufegnome-open
undgnome-open
liest/usr/share/gnome/applications/defaults.list
, die einen Symlink zu/etc/gnome-vfs-2.0/defaults.list
, der angibtapplication/pdf=evince.desktop
. Offensichtlich fehlt Vanilla FF die GNOME-Integration und ignoriert diese Präferenz.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-open
da sie GNOME-spezifische Pfade ignoriert (in meinem Fall/usr/share/gnome/applications/defaults.list
ein Symlink zu/etc/gnome-vfs-2.0/defaults.list
). Ich mussteapplication/pdf=evince.desktop
in meinem angeben~/.local/share/applications/defaults.list
. (Beachten Sie, dassdefaults.list
in verschmolzen wurdemimeapps.list
in neueren Versionen von XDG.)Anstelle von XDG werden Metamail-Funktionen (Mailcap) verwendet, um die zugeordnete Anwendung für die folgenden Anwendungsfälle aufzulösen:
about:preferences#applications
)Die Einstellung in
about:preferences#applications
wird 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-mailcap
Dienstprogramm ist analog zuxdg-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.order
und ausführenupdate-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/mailcap
und ausführenupdate-mime
. Siehe die Kommentare im oberen Abschnitt.Verwenden Sie für Benutzereingaben und Überschreibungen
~/.mailcap
. Die Änderungen werden sofort wirksam. Nein~/.mailcap.order
existiert; 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 mailcap
undman mailcap.order
.Beachten Sie, dass einige Anwendungen allgemeine Dienstprogramme (wie z. B.
x-www-browser
oderpager
) verwenden, anstatt die bevorzugte Anwendung zu erkennen. Möglicherweise müssen Sieupdate-alternatives
einen ä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 wieEDITOR
(oderVISUAL
)PAGER
und festBROWSER
. Sie werden vonsensible-browser
anderen, häufig spezifischeren Tools (z . B.git commit
VerwendungenEDITOR
undVISUAL
) unterstützt.quelle
application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'"
. Firefox ruft dann aufsh downloaded_file.pdf
. Auf meiner Konsole sehe ich dann unter anderem/tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not found
usw. Dieses Verhalten bleibt für immer erhalten, es sei denn, jemand behebt dies. Siehe Mozilla Bugzilla .update-mime
bereitstellt,xdg-settings
MIME-Standardeinstellungen mit nicht weniger als 4 Dienstprogrammen festlegen : (zum Aktualisieren von mailcap), (zum Aktualisieren von xdg-open),gio
(um gnome-open zu aktualisieren) undupdate-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