Domyślnie Firefox (33.0) na moim FreeBSD 11.0-CURRENT ma domyślną aplikację do otwierania plików PDF ustawioną na Inkscape. Firefox pamięta mój poprzedni wybór, ewangelia , w „Co Firefox powinien zrobić z tym plikiem?” dialog, więc do niedawna byłem po prostu zdezorientowany, skąd pochodzi ta konfiguracja, ale najczęściej ją ignorowałem, ponieważ prawie mnie to nie dotyczyło.
Jednak ostatnio zacząłem używać Zotero jako bazy danych literatury. Zotero działa jako wtyczka firefox i ignoruje wybory dokonane w moich preferencjach Firefoksa, aby otwierać pliki PDF z evince lub pytać mnie, co z nimi zrobić, i po prostu otwiera je za pomocą Inkscape. Zmusiło mnie to do podjęcia próby sprawdzenia tego konkretnego elementu konfiguracji Firefoksa, ale nie mogłem znaleźć, gdzie jest ustawiona ta domyślna wartość.
Nie mogłem znaleźć ciągu Inkscape
(lub inkscape
) w żadnym pliku związanym z Firefoksem w moim katalogu domowym.
źródło
Odpowiedzi:
Link do „podobnego pytania” ( domyślne zachowanie aplikacji xdg-open - nie jest oczywiście powiązane, ale niektóre eksperymenty wykazały, że zachowanie jest rzeczywiście równoważne z tym
xdg-open
) doprowadziło mnie głębiej do króliczej nory. Chociaż Firefox nie opiera się na regułach ani nie dziedziczy po nich,xdg-open
używa plików specyfikacji MIME tak samo, jakxdg-open
robi to.Na poziomie użytkownika zachowanie otwierające MIME jest konfigurowane przez plik specyfikacji
~/.local/share/applications/mimeapps.list
.Dla mnie ten plik zawiera tylko kilka rozsądnych protokołów i podłączonych do niego plików HTML (i podobnych)
userapp-Firefox-??????.desktop
, ale można łatwo dodać wiersz taki jakaby rozwiązać ten problem dla poszczególnych użytkowników. Jeśli plik jeszcze nie istnieje, dodaj nagłówek sekcji, na przykład
Głębiej w dół, typy MIME są zdefiniowane w
/usr/local/share/applications/mimeinfo.cache
(może to być,/usr/share/…
jeśli nie jesteś w systemie FreeBSD), który zawiera listęapplication/pdf=inkscape.desktop;evince.desktop;
. Zarównoevince.desktop
iinkscape.desktop
w tym folderze zawierająMimeType=[…]application/pdf;[…]
.mimeinfo.cache
Jest automatycznie generowana z typów MIME wymienionych w.desktop
plikach bez ściśle określonej kolejności, więc trzeba albo usunąć typ MIME PDF z Inkscape i zregenerować cache użyciemupdate-mime-database
lub wygenerować mimeapps.list (zarówno w skali globalnej/usr/local/share/applications/
, lub dla użytkownika w~/.local/share/applications/mimeapps.list
).źródło
update-mime-database
robi coś innego, czego potrzebowałemupdate-desktop-database ~/.local/share/applications
.xdg-open file.pdf
otwiera evince (podobnie jak Nautilus), podczas gdy Firefox otwiera xpdf. Używającfind ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +
odkryłem, że PDF nie jest wymieniony nigdzie w konfiguracji użytkownika, tylko w/usr/share/applications/mimeinfo.cache
odpowiednich*.desktop
plikach. Linia wmimeinfo.cache
jestapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;
. Chyba FF bierze pierwszy przedmiot. Ale skądxdg-open
mam wiedzieć, że chcę Evince'a?strace
odkryłem, żexdg-open
wywołujegnome-open
ignome-open
czyta/usr/share/gnome/applications/defaults.list
, co jest dowiązaniem symbolicznym/etc/gnome-vfs-2.0/defaults.list
, które określaapplication/pdf=evince.desktop
. Oczywiście, waniliowy FF nie ma integracji z GNOME i dlatego ignoruje tę preferencję.W przeglądarce Firefox 38.8.0 ESR, w Debianie Lenny z GNOME 2, odkryłem, że aplikacja powiązana z XDG (opisana w odpowiedzi OP ) jest używana tylko podczas otwierania pobranego pliku z Pobranych w Bibliotece.
I nawet tam implementacja daje niespójne wyniki,
xdg-open
ponieważ ignoruje ścieżki specyficzne dla GNOME (w moim przypadku/usr/share/gnome/applications/defaults.list
jest to dowiązanie symboliczne/etc/gnome-vfs-2.0/defaults.list
). Musiałem sprecyzowaćapplication/pdf=evince.desktop
w swoim~/.local/share/applications/defaults.list
. (Uwaga:defaults.list
został scalony zmimeapps.list
nowszymi wersjami XDG.)Zamiast XDG, funkcje metamail (mailcap) są używane do rozwiązania powiązanej aplikacji w następujących przypadkach użycia:
about:preferences#applications
)Preferencji w
about:preferences#applications
używa się podczas nawigacji do adresu URL o tym typie treści, chyba że pobieranie jest wymuszone.Mailcap jest mechanizmem starszym niż XDG i ma swoje korzenie w e-mailu, skąd również pochodzi MIME.
run-mailcap
Narzędzie jest analogicznaxdg-open
. Jego konfiguracja składa się z trzech plików (malejących):~/.mailcap
- wpisy użytkownika/etc/mailcap.order
- Specyfikacja zamawiania wpisów systemowych/etc/mailcap
- wpisy ogólnosystemowe (taki sam format jak wpisy użytkownika)Razem tworzą listę wpisów jednowierszowych, które określają aplikację, która będzie używana dla dowolnego typu MIME. Wpisy są dopasowywane od góry do dołu, więc pierwszeństwo ma to, co pierwsze.
Aby wprowadzić w systemie zmianę pierwszeństwa wpisów, musisz edytować
/etc/mailcap.order
i uruchomićupdate-mime
.Aby zastąpić niektóre wpisy lub określić własne, ogólnosystemowe, musisz edytować górną sekcję (przeznaczoną do wpisów tworzonych ręcznie)
/etc/mailcap
i uruchomićupdate-mime
. Zobacz komentarze w górnej części.W przypadku wpisów użytkownika i przesłonięć użyj
~/.mailcap
. Zmiany wchodzą w życie natychmiast. Nie~/.mailcap.order
istnieje; jeśli chcesz zmienić pierwszeństwo wpisów, zmień ich kolejność fizycznie (jeśli są~/.mailcap
) lub zastąp je preferowaną wersją (jeśli są/etc/mailcap
).Zobacz
man update-mime
,man mailcap
aman mailcap.order
.Zauważ, że niektóre aplikacje używają ogólnych narzędzi (takich jak
x-www-browser
lubpager
) zamiast wykrywania preferowanej aplikacji. Może być konieczne użycieupdate-alternatives
lub podobnego mechanizmu do wyboru preferowanej implementacji ogólnego narzędzia w dystrybucji. Lub, aby zastąpić ogólnosystemową preferowaną alternatywę dla konkretnego użytkownika, ustaw zmienne środowiskowe, takie jakEDITOR
(lubVISUAL
)PAGER
iBROWSER
. Są one obsługiwane przezsensible-browser
i inne, często bardziej szczegółowe narzędzia (np.git commit
ZastosowaniaEDITOR
iVISUAL
).źródło
application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'"
. Firefox następnie wywołujesh downloaded_file.pdf
. Na mojej konsoli widzę między innymi/tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not found
itd. To zachowanie pozostanie na zawsze, chyba że ktoś to naprawi. Zobacz Mozilla Bugzilla .update-mime
(aby zaktualizować mailcap),xdg-settings
(aby zaktualizować xdg-open),gio
(aby zaktualizować gnome-open) iupdate-alternatives
(aby zaktualizować tak zwane narzędzia ogólne). I oczywiście nie powinien zapominać o zarządzaniu ustawieniami zarówno dla całego systemu, jak i dla każdego użytkownika osobno (prawdopodobnie najlepiej, aby zablokować możliwość zmiany domyślnych ustawień użytkownika) ... - ach, a także plik handlers.json FF: mzl.la/1xKrLAq