Dari mana firefox mendapatkan aplikasi "default" untuk membuka file?


12

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.



Default Firefox saya diatur ke Font-Viewer.
pengguna

Jawaban:


14

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, Firefox xdg-openmenggunakan file spesifikasi MIME seperti xdg-openhalnya.

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 seperti

application/pdf=evince.desktop

untuk memecahkan masalah tersebut berdasarkan per pengguna. Jika file belum ada, pastikan untuk menambahkan header bagian, seperti

[Default Applications]
application/pdf=evince.desktop

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 daftar application/pdf=inkscape.desktop;evince.desktop;. Keduanya evince.desktopdan inkscape.desktopdi folder itu berisi MimeType=[…]application/pdf;[…].

Secara mimeinfo.cacheotomatis dihasilkan dari jenis mime yang tercantum dalam .desktopfile tanpa urutan yang jelas, sehingga Anda harus menghapus tipe mime PDF dari Inkscape dan membuat ulang cache menggunakan update-mime-database, atau menghasilkan mimeapps.list (baik secara global /usr/local/share/applications/, atau untuk pengguna Anda di ~/.local/share/applications/mimeapps.list).


Di Linux Debian kuno saya, saya update-mime-databasemelakukan sesuatu yang berbeda update-desktop-database ~/.local/share/applications.
Palec

Juga, xdg-open file.pdfbuka Evince (seperti halnya Nautilus), sementara Firefox membuka xpdf. Menggunakan find ~/.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.cachedan *.desktopfile masing-masing . Baris dalam mimeinfo.cacheadalah application/pdf=xpdf.desktop;evince.desktop;xournal.desktop;. Saya kira FF mengambil item pertama. Tapi bagaimana xdg-opensaya tahu saya ingin Evince?
Palec

1
Menggunakan strace, saya menemukan bahwa xdg-openpanggilan gnome-opendan gnome-openmembaca /usr/share/gnome/applications/defaults.list, yang merupakan symlink ke /etc/gnome-vfs-2.0/defaults.list, yang menentukan application/pdf=evince.desktop. Jelas, vanilla FF tidak memiliki integrasi GNOME dan karenanya mengabaikan preferensi ini.
Palec

7

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-openkarena 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 yang defaults.listdigabung dalam mimeapps.listXDG versi terbaru.)

Alih-alih XDG, kemampuan metamail (mailcap) digunakan untuk menyelesaikan aplikasi terkait untuk kasus penggunaan berikut:

  • membuka file yang diunduh dari panel unduhan (ditampilkan setelah menekan tombol unduh di bilah alat)
  • aplikasi default dalam drop-down di dialog unduhan file
  • aplikasi default di drop-down di Preferensi → Aplikasi ( 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-mailcaputilitas analogis untuk xdg-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.orderdan menjalankan update-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/mailcapdan jalankan update-mime. Lihat komentar di bagian atas.

Untuk entri dan penggantian pengguna, gunakan ~/.mailcap. Perubahan segera berlaku. Tidak ~/.mailcap.orderada; 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 mailcapdan man mailcap.order.

Perhatikan bahwa beberapa aplikasi menggunakan utilitas umum (seperti x-www-browseratau pager) alih-alih mendeteksi aplikasi yang disukai. Anda mungkin perlu menggunakan update-alternativesatau 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 seperti EDITOR(atau VISUAL), PAGERdan BROWSER. Mereka didukung oleh sensible-browserdan lainnya, seringkali alat yang lebih spesifik (misalnya git commitpenggunaan EDITORdan VISUAL).


1
Jawaban ini masih valid di Firefox Quantum (64.0). Namun, mailcap berkinerja lebih baik daripada firefox yang sebenarnya, jadi Anda tidak dapat sepenuhnya mengandalkan run-mailcap --debug --norun. Saya memiliki sebuah entri seperti ini: application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'". Firefox kemudian memanggil sh 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 founddll. Perilaku ini akan tetap selamanya, kecuali seseorang memperbaikinya. Lihat Mozilla Bugzilla .
u_Ltd.

1
Jadi, untuk menciptakan pengalaman yang konsisten bagi penggunanya, seorang admin yang menggunakan kombinasi Debian dengan Gnome, harus menetapkan default mime menggunakan tidak kurang dari 4 utilitas: update-mime(untuk memperbarui mailcap), xdg-settings(untuk memperbarui xdg-open), gio(untuk memperbarui gnome-open) dan update-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
zenlord
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.