Wo werden Dateizuordnungen gespeichert?

67

Wie speichert Ubuntu oder ein anderes Linux-System Dateizuordnungen?

Gibt es eine /etc/asscociationsDatei oder so?

Ich weiß, dass ich mit der rechten Maustaste auf eine Datei klicken und sie über "Öffnen mit" ändern kann, aber ich bin nur neugierig, wie sie intern gespeichert wird.

Stann
quelle

Antworten:

67

Der Dateimanager (standardmäßig Nautilus) verwendet den MIME-Typ einer Datei, um zu bestimmen, mit welchem ​​Programm er geöffnet werden soll. Wenn eine Anwendung installiert ist, kann sie angeben, welche MIME-Typen sie öffnen kann, und den Befehl zum Öffnen der Dateien in der .desktop-Datei, in der sie abgelegt ist /usr/share/applications. Dies ist die Datei, die für Menüs, Desktop-Verknüpfungen usw. verwendet wird.

Beispielsweise verfügt GIMP über die folgende .desktop-Datei:

[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;

Siehe das MimeTypeFeld - hier werden die unterstützten MIME-Typen aufgelistet. Das ExecFeld weist das System an, den Befehl zu verwenden gimp-2.7 %Uund '% U' durch die zu öffnenden Dateien zu ersetzen. (Hinweis: GIMP 2.7 ist eine Version, die ich von einem PPA installiert habe, also höher als die aktuelle Version in den Ubuntu-Repositories).

Wenn das Anwendungspaket installiert ist, extrahiert das System diese MIME-Typdaten in eine leichter zugängliche Datenbank, da das Durchsuchen der einzelnen .desktop-Dateien bei jedem Öffnen einer Datei zu lange dauern würde.

Dies teilt dem System mit, welche Anwendungen können für diesen MIME - Typ verwendet werden und bietet die Anwendungen in der ‚Öffnen mit‘ Liste. Der Standard ist an anderer Stelle definiert. Die Datei /usr/share/applications/defaults.listenthält die Informationen für die Systemstandards. Sofern Sie nichts anderes auswählen, sind dies die Anwendungen, die beim 'Öffnen' einer Datei verwendet werden.

dv3500ea
quelle
7
Gibt es nach dem Ändern von MIME-Typen in /usr/share/applications .desktopDateien einen Befehl zum erneuten Erstellen dieser MIME-Datenbank, um neue Zuordnungen in Aktion zu sehen?
Redsandro
12
Ja. sudo update-desktop-databaseSiehe jarrpa.net/2011/10/28/…
NoBugs
Ein geeigneterer Ort für lokale Änderungen ist /usr/local/share/applications. Ich denke, gtk sieht auch dort standardmäßig aus. Es funktioniert auf meinem System, aber es wurde seit Ubuntu 7.04 oder so aktualisiert (nicht neu installiert).
Peter Cordes
2
Ubuntu scheint freedesktop.org zu folgen: standards.freedesktop.org/mime-apps-spec/… , ein großartiges Projekt.
Ciro Santilli am
23

Um die hervorragende Antwort von dv3500ea zu ergänzen, möchte ich einige Informationen darüber hinzufügen, was passiert, wenn Sie Ihre Assoziationen ändern.

Während die defaults.list (die Sie finden, indem Sie 'locate defaults.list' eingeben) die Liste der Anwendungen enthält, die jedem MIME-Typ zugeordnet sind, werden alle von Ihnen vorgenommenen Anpassungen in Ihrem Ausgangsverzeichnis in ~ / .local / gespeichert. share / applications / mimeapps.list. Wenn Sie also Zuordnungen hinzufügen oder entfernen oder die Standardzuordnung ändern, wird diese Datei aktualisiert.

Im GNOME Desktop System-Administrationshandbuch unter http://library.gnome.org/admin/system-admin-guide/stable/ wird mimeapps.list anscheinend nicht behandelt, aber ich habe die folgende Beschreibung unter http: //live.gnome gefunden .org / SysAdminGuideUpdate :

mimeapps.list befindet sich in $ XDG_DATA_DIRS / applications. Der Zweck ist das Hinzufügen oder Entfernen von MIME-Zuordnungen zu Anwendungen. nautilus schreibt ~ / .local / share / applications / mimeapps.list, wenn der Benutzer Änderungen im Dialogfeld "Öffnen mit" vornimmt.


quelle
1
Aber mit Ubuntu 12.04 stelle ich fest, dass das mimeapps.listvon Einträgen in der überschrieben wird defaults.list.
Feeela
1
am 14.04 konnte ich s / vlc / mplayer / in meinen ~/.local/share/applications/mimeapps.list, und laufende prozesse wie pcmanfm haben die änderungen ohne neustart übernommen. (mplayer.desktop läuft nur mit mplayer. Ich hatte einen, der von einem alten mplayer in / usr / local herumlag, denke ich. IDK, ob ein MimeType=list;benötigt wurde oder nicht.
Peter Cordes
Genauer gesagt, mimeapps.listkann irgendwo in den folgenden Suchpfad sein: Specifications.freedesktop.org/mime-apps-spec/…
Ciro Santilli
18

Ich habe festgestellt, dass es auf meinem System (Debian Jessie) auch eine ~/.config/mimeapps.listVerknüpfung gibt, die ich versehentlich erstellt habe, um einen bestimmten Dateityp mit gedit zu öffnen. Keine der Standardmethoden zur Korrektur (Standardanwendungseinstellungen, Thunar wird mit der Eigenschaft geöffnet ) hat dies widergespiegelt, aber gedit war die Standardanwendung.

Ich konnte die Zeile entfernen ~/.config/mimeapps.listund jetzt öffnet die richtige Anwendung die Datei.

Bryan Leaman
quelle
2
Vielen Dank, Sie haben mir aus Versehen geholfen, Firefox zu reparieren und alles in Gedit zu öffnen. Unter openSUSE 13.2 habe ich die Zeile mit "application / octet-stream = org.gnome.gedit.desktop;" entfernt. :)
user31389
3
seit ubuntu 15.04 sind die benutzerspezifischen änderungen auch in gespeichert ~/.config/mimeapps.list.
DJCrashdummy
2
Genauer gesagt, mimeapps.listkann irgendwo in den folgenden Suchpfad sein: Specifications.freedesktop.org/mime-apps-spec/…
Ciro Santilli
8

Ich habe diesen Link bezüglich der Standardzuordnung gefunden, er könnte hilfreich sein. https://wiki.archlinux.org/index.php/Default_Applications
for global association:

/usr/share/applications/mimeapps.list

pro Nutzerverband:

~/.local/share/applications/mimeapps.list

Die Syntax lautet wie folgt:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN

Im Abschnitt [Hinzugefügte Zuordnungen] werden bevorzugte (Standard-) Anwendungen in abnehmender Reihenfolge angegeben. was bedeutet, dass Desktopfile1 am meisten bevorzugt wird und DesktopfileN am wenigsten bevorzugt wird.
Der Abschnitt [Entfernte Verknüpfungen ] wird verwendet, um zuvor vererbte Verknüpfungen explizit zu entfernen.

IdontCareAboutReputationPoints
quelle
1
Dies stammt von einer Archlinux- Site, gilt nicht unbedingt für Ubuntu, /usr/share/applications/mimeapps.listexistiert nicht.
guntbert
Vielen Dank für den Hinweis, obwohl der Benutzer in Ubuntu oder anderen Linux-Systemen gesagt hat, dass dies auch eine Antwort auf seine Frage ist: P.
IdontCareAboutReputationPoints
5
Diese Antwort ist völlig in Ordnung , wenn Sie ersetzen mimeapps.desktopmitdefaults.desktop
SZX
8

Ich konnte eine Assoziation wie folgt festlegen:

xdg-mime default xnview.desktop image/jpeg

Sie können Assoziationen auch entfernen und andere Dinge tun: man xdg-mime

Ich musste nicht rennen sudo update-desktop-database.

warvariuc
quelle
7

Erstellen Sie eine Datei truecrypt.desktopin ~/.local/share/applicationsden folgenden Zeilen:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes

Bearbeiten Sie dann die Datei ~/.local/share/applications/mimeapps.listund fügen Sie die folgende Zeile hinzu:

application/octet-stream=truecrypt.desktop

Ich habe den MIME-Typ von Truecrypt herausgefunden, indem ich diesen Befehl ausgeführt habe:

file --mime-type -b <any truecrypt filename>
Blindfreddy
quelle
Gute Antwort, denn es funktioniert für diejenigen, die kde benutzen, aber ein paar gtk-native Programme haben, wie Firefox.
Naught101
5

mimeapps.list Suchpfad

Andere haben diese Datei erwähnt, aber keiner hat ihren Speicherort genau erklärt.

Der freedesktop.org-Standard lautet unter https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

Die Suchreihenfolge für diese Datei lautet wie folgt:

$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list             user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list             sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list  for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list             for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list    distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list              distribution-provided defaults

Die Standardwerte für diese Umgebungsvariablen finden Sie unter https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html :

  • $XDG_DATA_HOME: $HOME/.local/share
  • $XDG_CONFIG_HOME: $HOME/.config
  • $XDG_DATA_DIRS: keine, angehängt an XDG_DATA_HOME
  • $XDG_CONFIG_DIRS: keine, angehängt an XDG_CONFIG_HOME

Ältere Versionen von Ubuntu können dies möglicherweise nicht überprüfen. ~/.configVersuchen Sie es also ~/.local/shareauch.

Befehle wie:

 xdg-settings set default-web-browser chromium-browser.desktop
 xdg-settings get default-web-browser

bearbeitet diese Dateien automatisch.

Ciro Santilli ist ein Schauspieler
quelle
2

Für alle Benutzer:

/usr/share/applications/defaults.list

Jeder Benutzer hat eine Konfigurationsdatei zum Überschreiben dieser Standardeinstellungen:

~ / .config / mimeapps.list

Unter https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html finden Sie Informationen zu Orten, die zum Überschreiben von Defauts verwendet werden können.

Sie müssen den MIME-Typ der Datei kennen, deren Zuordnung Sie ändern möchten.

Außerdem können alle Zuordnungen in der Befehlszeile bearbeitet und geändert werden, indem Folgendes verwendet wird:

xdg-mime

Xoristzatziki
quelle
1

Freedesktop.org (früher als X Desktop Group bezeichnet, daher die Abkürzung "XDG") ist die Gruppe, die derzeit solche X-Standards anwendet ( weitere Informationen finden Sie bei Wikipedia ).

In der Antwort von warvariuc wird bereits die Verwendung von xdg-mime wie folgt erwähnt :

xdg-mime default xnview.desktop image/jpeg

 

Nachdem ich viel mit Bildbearbeitern und -betrachtern gespielt hatte, kam ich zu unterschiedlichen Bildbetrachtern für unterschiedliche Bildtypen mit fast keiner Konsistenz, insbesondere bei den selteneren Bildtypen.

Ich nahm den obigen Befehl und wies ihn jedem der von den Bildbetrachtern gesteuerten MIME-Typen zu und erstellte dann einen neuen, image-viewer.desktopindem ich einen von ihnen klonte (dies ist optional, Sie können lediglich Ihren Favoriten wiederverwenden). Als Nächstes habe ich manuell überprüft, ob keiner der MIME-Typen mit meiner neuen bevorzugten Anwendung nicht kompatibel ist. Schließlich habe ich diese Anwendung als Standard für alle MIME-Typen der anderen Anwendungen festgelegt:

sed '/^MimeType=/!d; s///; s/;/\n/g' \
  /usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \
  |xargs xdg-mime default image-viewer.desktop

Dabei werden die .desktopDateien für jeden der Betrachter untersucht ( in meinem Fall Ristretto , Geeqie und GThumb ), die MIME-Definition extrahiert (die MimeType=eine durch Semikolons getrennte Liste enthält), und das (zuvor übereinstimmende) Vorwort entfernt teilt die Liste in einen Eintrag pro Zeile auf. sort -uEntfernt dann die redundanten Leitungen und gibt sie weiter xdg-mime, um die neuen Standardeinstellungen festzulegen.

(Wenn Sie dies testen möchten, bevor Sie es live ausführen, wechseln Sie xargszu xargs echound es wird der resultierende Befehl gedruckt, anstatt ihn auszuführen.)

Diese Technik sollte für alles funktionieren, was Sie für eine Ziel-App zurückfordern möchten. Sie müssen nicht einmal eine neue .desktopDatei erstellen (Sie können eine vorhandene Datei verwenden). Ich habe diesen zusätzlichen Schritt ausgeführt, damit ich, wenn ich unweigerlich meine Loyalität zwischen Bildvorschauprogrammen ändere, nur diese eine Datei ändern muss.

Adam Katz
quelle
1

Unter Ubuntu 18.04 habe ich folgende Rangfolge gefunden, von der stärksten zur schwächsten:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Mit anderer Anwendung öffnen" aktualisiert dies.)
  4. ~/.local/share/applications/mimeapps.list
  5. Die erste Übereinstimmung in der mimeinfo.cacheRegistrierung kompatibler Anwendungen, die aus den .desktopin /usr/share/applicationsund vorhandenen Dateien generiert /usr/local/share/applicationswurden und mit neu generiert werden können update-desktop-database.
  6. (Nie benutzt) /etc/gnome/defaults.list
Jimmy He
quelle