Gdzie są przechowywane skojarzenia plików?

67

W jaki sposób Ubuntu lub inne systemy Linux przechowują skojarzenia plików?

Czy jest jakiś /etc/asscociationsplik czy coś?

Wiem, że mogę kliknąć plik prawym przyciskiem myszy i zmienić go poprzez „otwórz za pomocą”, ale jestem ciekawy, jak jest on przechowywany wewnętrznie.

Stann
źródło

Odpowiedzi:

67

Menedżer plików (domyślnie Nautilus) używa typu MIME pliku, aby określić, za pomocą którego programu go otworzyć. Gdy aplikacja jest zainstalowana, może określić, jakie typy MIME może otworzyć, oraz polecenie, które należy użyć, aby otworzyć pliki w pliku .desktop, który jest umieszczony /usr/share/applications. Jest to plik używany do menu, skrótów pulpitu itp.

Na przykład GIMP ma następujący plik .desktop:

[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;

Zobacz MimeTypepole - zawiera listę obsługiwanych typów MIME. ExecPole informuje system o użyciu polecenia gimp-2.7 %U, zastępując „% U” plikami do otwarcia. (Uwaga: GIMP 2.7 to wersja, którą zainstalowałem z PPA, więc jest wyższa niż bieżąca wersja w repozytoriach Ubuntu).

Po zainstalowaniu pakietu aplikacji system wyodrębnia dane typu MIME do łatwiej dostępnej bazy danych, ponieważ przeglądanie każdego pliku .desktop zajęłoby zbyt dużo czasu, gdyby robiono to przy każdym otwarciu pliku.

Informuje to system, jakie aplikacje mogą być używane dla tego typu MIME, i podaje aplikacje z listy „Otwórz za pomocą”. Wartość domyślna jest zdefiniowana w innym miejscu. Plik /usr/share/applications/defaults.listzawiera informacje o ustawieniach domyślnych systemu. O ile nie zdecydujesz inaczej, są to aplikacje używane podczas „otwierania” pliku.

dv3500ea
źródło
7
Czy po zmianie typów MIME w /usr/share/applications .desktopplikach istnieje polecenie ponownego utworzenia tej bazy danych MIME, aby zobaczyć nowe powiązania w akcji?
Redsandro,
12
Tak. sudo update-desktop-databaseZobacz jarrpa.net/2011/10/28/…
NoBugs
Bardziej odpowiednim miejscem dla lokalnych zmian jest /usr/local/share/applications. Myślę, że gtk też tam domyślnie szuka. Działa w moim systemie, ale został zaktualizowany (nie przeinstalowany) od wersji Ubuntu 7.04.
Peter Cordes
2
Ubuntu wydaje się podążać za freedesktop.org: standard.freedesktop.org/mime-apps-spec/... , niesamowitym projektem.
Ciro Santilli 30 改造 中心 法轮功 六四 事件
23

Aby uzupełnić doskonałą odpowiedź dv3500ea, chciałbym dodać trochę informacji o tym, co stanie się, gdy zmienisz swoje skojarzenia.

Chociaż defaults.list (którą można znaleźć, wpisując „locate defaults.list”) udostępnia listę aplikacji powiązanych z każdym typem MIME, wszelkie dokonane dostosowania są przechowywane w katalogu domowym, w ~ / .local / udostępnij / aplikacje / mimeapps.list. Więc jeśli dodasz lub usuniesz powiązania lub zmienisz domyślne powiązanie, ten plik zostanie zaktualizowany.

Przewodnik administracji systemem GNOME Desktop pod adresem http://library.gnome.org/admin/system-admin-guide/stable/ nie wydaje się omawiać mimeapps.list, ale znalazłem następujący opis na http: //live.gnome .org / SysAdminGuideUpdate :

mimeapps.list znajduje się w $ XDG_DATA_DIRS / applications. Jego celem jest dodawanie lub usuwanie powiązań MIME z aplikacji. nautilus zapisuje ~ / .local / share / applications / mimeapps.list, gdy użytkownik wprowadza zmiany w oknie dialogowym „Otwórz za pomocą”.


źródło
1
Ale używając Ubuntu 12.04, zdaję sobie sprawę, że mimeapps.listjest to nadpisywane przez wpisy w defaults.list.
feeela
1
14.04 mogłem s / vlc / mplayer / w moim ~/.local/share/applications/mimeapps.list, a działające procesy takie jak pcmanfm pobierały zmiany bez ponownego uruchamiania. (mplayer.desktop to po prostu działa mplayer. Miałem jednego leżącego ze starej instalacji mplayera w / usr / local, chyba. IDK, jeśli posiadanie MimeType=list;było potrzebne czy nie.
Peter Cordes
Dokładniej, mimeapps.listmoże znajdować się w dowolnym miejscu w następującej ścieżce wyszukiwania: Specyfikacje.freedesktop.org/mime-apps-spec/...
Ciro Santilli 事件 改造 中心 法轮功 六四 事件
18

Odkryłem, że w moim systemie (Debian Jessie) jest też takie ~/.config/mimeapps.list, które przypadkowo utworzyłem skojarzenie, aby otworzyć określony typ pliku za pomocą gedit. Żaden ze standardowych sposobów na poprawienie tego (domyślne ustawienia aplikacji, Thunar jest otwarty z właściwością) nie odzwierciedlał tego, ale gedit była aplikacją domyślną.

Byłem w stanie usunąć linię ~/.config/mimeapps.listi teraz właściwa aplikacja otwiera plik.

Bryan Leaman
źródło
2
Dzięki, przypadkowo pomogłeś mi naprawić Firefox otwierający wszystko w Gedit. W openSUSE 13.2 usunąłem wiersz z „application / octet-stream = org.gnome.gedit.desktop;”. :)
user31389,
3
od Ubuntu 15.04 modyfikacje specyficzne dla użytkownika są również przechowywane w ~/.config/mimeapps.list.
DJCrashdummy,
2
Dokładniej, mimeapps.listmoże znajdować się w dowolnym miejscu w następującej ścieżce wyszukiwania: Specyfikacje.freedesktop.org/mime-apps-spec/...
Ciro Santilli 事件 改造 中心 法轮功 六四 事件
8

Znalazłem ten link dotyczący domyślnego skojarzenia, może być pomocny. https://wiki.archlinux.org/index.php/Default_Applications
dla globalnego stowarzyszenia:

/usr/share/applications/mimeapps.list

na powiązanie użytkownika:

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

Składnia jest następująca:

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

Sekcja [Dodane powiązania] służy do określania preferowanych (domyślnych) aplikacji w malejących preferencjach. co oznacza, że desktopfile1 jest najbardziej preferowany, a desktopfileN jest najmniej preferowany. Sekcja
[Usunięte powiązania] służy do jawnego usuwania wszelkich odziedziczonych wcześniej powiązań.

IdontCareAboutReputationPoints
źródło
1
Pochodzi z witryny archlinux , niekoniecznie dotyczy Ubuntu, /usr/share/applications/mimeapps.listnie istnieje.
guntbert
Dziękujemy za zwrócenie na to uwagi, jakkolwiek użytkownik powiedział w Ubuntu lub innych systemach Linux, oznacza to, że jest to również odpowiedź na jego pytanie: P.
IdontCareAboutReputationPoints
5
Ta odpowiedź jest zupełnie ok, jeśli zastąpi mimeapps.desktopsiędefaults.desktop
SZX
8

Byłem w stanie ustawić takie stowarzyszenie:

xdg-mime default xnview.desktop image/jpeg

Możesz także usuwać powiązania i wykonywać inne czynności: man xdg-mime

Nie musiałem biegać sudo update-desktop-database.

warvariuc
źródło
7

Utwórz plik truecrypt.desktopna ~/.local/share/applicationsnastępujące linie:

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

następnie edytuj plik ~/.local/share/applications/mimeapps.listi dodaj następujący wiersz:

application/octet-stream=truecrypt.desktop

Znalazłem typ MIME Truecrypt, uruchamiając to polecenie:

file --mime-type -b <any truecrypt filename>
Blindfreddy
źródło
Dobra odpowiedź, ponieważ działa dla tych, którzy używają kde, ale mają kilka programów natywnych gtk, takich jak Firefox.
naught101
5

mimeapps.list ścieżka wyszukiwania

Inni wspomnieli o tym pliku, ale nikt nie wyjaśnił dokładnie jego lokalizacji.

Standard freedesktop.org mówi na https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

Kolejność wyszukiwania dla tego pliku jest następująca:

$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

a następnie wartości domyślne tych zmiennych środowiskowych podano na stronie 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: brak, dołączono do XDG_DATA_HOME
  • $XDG_CONFIG_DIRS: brak, dołączono do XDG_CONFIG_HOME

Starsze wersje Ubuntu mogą nie sprawdzać ~/.config, więc spróbuj ~/.local/sharerównież.

Polecenia takie jak:

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

automatycznie edytuje te pliki.

Ciro Santilli
źródło
2

Dla wszystkich użytkowników:

/usr/share/applications/defaults.list

Każdy użytkownik ma plik konfiguracyjny do zastąpienia tych wartości domyślnych:

~ / .config / mimeapps.list

zobacz także https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html, aby znaleźć miejsca, które mogą zostać użyte do zastąpienia defauts.

Musisz znać typ MIME pliku, który chcesz zmienić, to powiązanie.

Również wszystkie skojarzenia można zmienić w wierszu poleceń, używając:

xdg-mime

Xoristzatziki
źródło
1

Freedesktop.org (wcześniej nazywany X Desktop Group, stąd skrót „XDG”) to grupa, która obecnie kieruje się takimi standardami X ( więcej na Wikipedii ).

Odpowiedź warvariuc wspomina już o użyciu xdg-mime, takim jak:

xdg-mime default xnview.desktop image/jpeg

 

Po wielu zabawach z edytorami obrazów i przeglądarkami skończyłem z różnymi przeglądarkami dla różnych typów obrazów, prawie bez konsekwencji, szczególnie wśród rzadszych typów obrazów.

Wziąłem powyższe polecenie i przypisałem je do każdego z typów MIME kontrolowanych przez przeglądarki zdjęć, a następnie utworzyłem nowy image-viewer.desktop, klonując jeden z nich (jest to opcjonalne, możesz jedynie ponownie użyć swojego ulubionego). Następnie ręcznie zweryfikowałem, że żaden z typów MIME nie będzie niezgodny z moją nową preferowaną aplikacją. Na koniec ustawiłem tę aplikację jako domyślną dla wszystkich typów MIME innych aplikacji:

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

To bada .desktoppliki dla każdego z przeglądarek ( w moim przypadku Ristretto , Geeqie i GThumb ), wypakowuje definicję MIME (która jest poprzedzona przez, MimeType=a następnie zawiera listę rozdzielaną średnikami), usuwa (wcześniej dopasowaną) etykietę przedmowy i dzieli listę na jeden wpis w wierszu. sort -unastępnie usuwa zbędne linie, a następnie są one xdg-mimeustawione, aby ustawić nowe wartości domyślne.

(Jeśli chcesz to przetestować przed uruchomieniem na żywo, zmień xargsna xargs echoi wyświetli wynikowe polecenie zamiast go uruchomić).

Ta technika powinna działać na wszystko, co chcesz odzyskać dla aplikacji docelowej. Nie musisz nawet tworzyć nowego .desktoppliku (możesz użyć istniejącego). Zrobiłem ten dodatkowy krok, więc gdy nieuchronnie zmieniam swoją lojalność między podglądami obrazów, muszę tylko zmienić ten jeden plik.

Adam Katz
źródło
1

W Ubuntu 18.04 kolejność pierwszeństwa jest następująca, od najsilniejszej do najsłabszej:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list („Otwórz za pomocą innej aplikacji” zaktualizuje to)
  4. ~/.local/share/applications/mimeapps.list
  5. Pierwsze napotkane dopasowanie w mimeinfo.cacherejestrze kompatybilnych aplikacji, które są generowane z .desktopplików obecnych w /usr/share/applicationsi /usr/local/share/applicationsi można je zregenerować za pomocą update-desktop-database.
  6. (Nigdy nie używany) /etc/gnome/defaults.list
Jimmy He
źródło