Secara default, Firefox (33.0) pada FreeBSD 11.0-CURRENT saya memiliki aplikasi default untuk membuka file PDF yang diatur ke Inkscape. Firefox tidak ingat pilihan saya sebelumnya, evince , dalam “Apa yang harus firefox lakukan dengan file ini?” dialog, jadi sampai saat ini saya hanya bingung dari mana konfigurasi ini berasal, tetapi sebagian besar mengabaikannya karena itu hampir tidak mempedulikan saya.
Namun saya baru-baru ini mulai menggunakan Zotero sebagai basis data literatur saya. Zotero berjalan sebagai plugin firefox, dan mengabaikan pilihan yang dibuat dalam preferensi Firefox saya untuk membuka file PDF dengan evince atau bertanya kepada saya apa yang harus dilakukan dengan mereka, dan hanya membukanya menggunakan Inkscape. Ini membuat saya mencoba untuk menindaklanjuti item konfigurasi Firefox ini, tetapi saya tidak dapat menemukan di mana pengaturan default itu ditetapkan.
Saya tidak dapat menemukan string Inkscape
(atau inkscape
) di file terkait Firefox di direktori home saya.
sumber
Jawaban:
Tautan ke "pertanyaan serupa" ( perilaku aplikasi default xdg-open - tidak jelas terkait, tetapi beberapa eksperimen menunjukkan bahwa perilaku tersebut memang setara dengan salah satunya
xdg-open
) membuat saya semakin dalam ke lubang kelinci. Meskipun Firefox tidak bergantung pada, atau mewarisi aturan dari, Firefoxxdg-open
menggunakan file spesifikasi MIME sepertixdg-open
halnya.Atas dasar pengguna, perilaku pembukaan MIME dikonfigurasi oleh file spesifikasi
~/.local/share/applications/mimeapps.list
.Bagi saya, file ini hanya berisi beberapa protokol masuk akal dan file HTML (dan sejenisnya) yang terhubung
userapp-Firefox-??????.desktop
, tetapi Anda dapat dengan mudah menambahkan baris sepertiuntuk memecahkan masalah tersebut berdasarkan per pengguna. Jika file belum ada, pastikan untuk menambahkan header bagian, seperti
Lebih dalam ke bawah, tipe mime didefinisikan dalam
/usr/local/share/applications/mimeinfo.cache
(ini mungkin/usr/share/…
jika Anda tidak pada sistem FreeBSD), yang memang daftarapplication/pdf=inkscape.desktop;evince.desktop;
. Keduanyaevince.desktop
daninkscape.desktop
di folder itu berisiMimeType=[…]application/pdf;[…]
.Secara
mimeinfo.cache
otomatis dihasilkan dari jenis mime yang tercantum dalam.desktop
file tanpa urutan yang jelas, sehingga Anda harus menghapus tipe mime PDF dari Inkscape dan membuat ulang cache menggunakanupdate-mime-database
, atau menghasilkan mimeapps.list (baik secara global/usr/local/share/applications/
, atau untuk pengguna Anda di~/.local/share/applications/mimeapps.list
).sumber
update-mime-database
melakukan sesuatu yang berbedaupdate-desktop-database ~/.local/share/applications
.xdg-open file.pdf
buka Evince (seperti halnya Nautilus), sementara Firefox membuka xpdf. Menggunakanfind ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +
saya menemukan bahwa PDF tidak disebutkan dalam konfigurasi pengguna, hanya dalam/usr/share/applications/mimeinfo.cache
dan*.desktop
file masing-masing . Baris dalammimeinfo.cache
adalahapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;
. Saya kira FF mengambil item pertama. Tapi bagaimanaxdg-open
saya tahu saya ingin Evince?strace
, saya menemukan bahwaxdg-open
panggilangnome-open
dangnome-open
membaca/usr/share/gnome/applications/defaults.list
, yang merupakan symlink ke/etc/gnome-vfs-2.0/defaults.list
, yang menentukanapplication/pdf=evince.desktop
. Jelas, vanilla FF tidak memiliki integrasi GNOME dan karenanya mengabaikan preferensi ini.Di Firefox 38.8.0 ESR, di bawah Debian Lenny dengan GNOME 2, saya menemukan bahwa aplikasi terkait melalui XDG (dijelaskan dalam jawaban oleh OP ) hanya digunakan ketika membuka file yang diunduh dari Unduhan di Perpustakaan.
Dan bahkan di sana, implementasi memberikan hasil yang tidak konsisten
xdg-open
karena mengabaikan jalur khusus GNOME (dalam kasus saya/usr/share/gnome/applications/defaults.list
, yang merupakan symlink ke/etc/gnome-vfs-2.0/defaults.list
). Saya harus menentukanapplication/pdf=evince.desktop
di~/.local/share/applications/defaults.list
. (Catatan yangdefaults.list
digabung dalammimeapps.list
XDG versi terbaru.)Alih-alih XDG, kemampuan metamail (mailcap) digunakan untuk menyelesaikan aplikasi terkait untuk kasus penggunaan berikut:
about:preferences#applications
)Preferensi dalam
about:preferences#applications
digunakan saat menavigasi ke URL dengan tipe konten itu, kecuali unduhan dipaksakan.Mailcap adalah mekanisme yang lebih tua dari XDG dan berakar pada e-mail, dari mana MIME juga berasal. The
run-mailcap
utilitas analogis untukxdg-open
. Konfigurasi ini terdiri dari tiga file (dalam mengurangi prioritas):~/.mailcap
- entri pengguna/etc/mailcap.order
- spesifikasi pemesanan entri seluruh sistem/etc/mailcap
- entri seluruh sistem (format yang sama dengan entri pengguna)Bersama-sama mereka menghasilkan daftar entri satu baris yang menentukan aplikasi yang akan digunakan untuk jenis MIME yang diberikan. Entri dicocokkan dari atas ke bawah, sehingga yang lebih dulu diutamakan.
Untuk membuat prioritas dari entri di seluruh sistem, Anda perlu mengedit
/etc/mailcap.order
dan menjalankanupdate-mime
.Untuk mengganti beberapa entri atau menentukan sendiri Anda, seluruh sistem, Anda perlu mengedit bagian atas (dimaksudkan untuk entri yang dibuat secara manual) dari
/etc/mailcap
dan jalankanupdate-mime
. Lihat komentar di bagian atas.Untuk entri dan penggantian pengguna, gunakan
~/.mailcap
. Perubahan segera berlaku. Tidak~/.mailcap.order
ada; jika Anda ingin mengubah prioritas entri, susun ulang secara fisik (jika ada~/.mailcap
), atau ganti dengan versi yang disukai (jika ada/etc/mailcap
).Lihat
man update-mime
,man mailcap
danman mailcap.order
.Perhatikan bahwa beberapa aplikasi menggunakan utilitas umum (seperti
x-www-browser
ataupager
) alih-alih mendeteksi aplikasi yang disukai. Anda mungkin perlu menggunakanupdate-alternatives
atau mekanisme serupa untuk memilih implementasi yang disukai dari utilitas generik di distro Anda. Atau, untuk mengganti alternatif pilihan seluruh sistem untuk pengguna tertentu, setel variabel lingkungan sepertiEDITOR
(atauVISUAL
),PAGER
danBROWSER
. Mereka didukung olehsensible-browser
dan lainnya, seringkali alat yang lebih spesifik (misalnyagit commit
penggunaanEDITOR
danVISUAL
).sumber
application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'"
. Firefox kemudian memanggilsh downloaded_file.pdf
. Pada konsol saya, saya kemudian melihat, di antara yang lain-lain,/tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not found
dll. Perilaku ini akan tetap selamanya, kecuali seseorang memperbaikinya. Lihat Mozilla Bugzilla .update-mime
(untuk memperbarui mailcap),xdg-settings
(untuk memperbarui xdg-open),gio
(untuk memperbarui gnome-open) danupdate-alternatives
(untuk memperbarui yang disebut utilitas generik). Dan tentu saja dia tidak boleh lupa untuk mengatur pengaturan baik di seluruh sistem dan untuk setiap pengguna secara terpisah (mungkin yang terbaik untuk memblokir kemampuan pengguna untuk mengubah default) ... - ah, dan file FF's handlers.json juga: mzl.la/1xKrLAq