Trường hợp firefox có được các ứng dụng mặc định của Wikipedia để mở tệp từ đâu?


12

Theo mặc định, Firefox (33.0) trên FreeBSD 11.0-CURRENT của tôi có ứng dụng mặc định để mở tệp PDF được đặt thành Inkscape. Firefox có nhớ lựa chọn trước đây của tôi không, bằng chứng , trong Firefox, Firefox nên làm gì với tập tin này? Hộp thoại, vì vậy cho đến gần đây tôi chỉ bối rối không biết cấu hình này đến từ đâu, nhưng chủ yếu bỏ qua nó vì nó hầu như không liên quan đến tôi.

Tuy nhiên gần đây tôi đã bắt đầu sử dụng Zotero làm cơ sở dữ liệu văn học của mình. Zotero chạy như một plugin firefox và bỏ qua các lựa chọn trong tùy chọn Firefox của tôi để mở tệp PDF bằng cách chứng minh hoặc hỏi tôi phải làm gì với chúng và chỉ cần mở chúng bằng Inkscape. Điều này khiến tôi cố gắng theo dõi mục cấu hình cụ thể này của Firefox, nhưng tôi không thể tìm thấy nơi mặc định đó được đặt.

Tôi không thể tìm thấy chuỗi Inkscape(hoặc inkscape) trong bất kỳ tệp nào liên quan đến Firefox trong thư mục chính của tôi.



Mặc định Firefox của tôi được đặt thành Font-Viewer.
người dùng

Câu trả lời:


14

Một liên kết đến một câu hỏi tương tự của người Viking ( hành vi ứng dụng mặc định mở xdg - không rõ ràng có liên quan, nhưng một số thử nghiệm cho thấy hành vi đó thực sự tương đương với một trong những điều đó xdg-open) đã đưa tôi xuống sâu hơn lỗ thỏ. Mặc dù Firefox không dựa vào hoặc kế thừa các quy tắc từ xdg-openđó, nhưng nó sử dụng các tệp đặc tả MIME giống như xdg-openvậy.

Trên cơ sở người dùng, hành vi mở MIME được cấu hình bởi tệp đặc tả ~/.local/share/applications/mimeapps.list.

Đối với tôi, tệp này chỉ chứa một vài giao thức hợp lý và tệp HTML (và tương tự) được kết nối với userapp-Firefox-??????.desktop, nhưng bạn có thể dễ dàng thêm một dòng như

application/pdf=evince.desktop

để giải quyết vấn đề đó trên cơ sở mỗi người dùng. Nếu tệp chưa tồn tại, hãy đảm bảo thêm tiêu đề phần, chẳng hạn như

[Default Applications]
application/pdf=evince.desktop

Sâu xa hơn, các loại mime được xác định trong /usr/local/share/applications/mimeinfo.cache(điều này có thể là /usr/share/…nếu bạn không ở trong hệ thống FreeBSD), danh sách này application/pdf=inkscape.desktop;evince.desktop;. Cả evince.desktopinkscape.desktoptrong thư mục đó đều chứa MimeType=[…]application/pdf;[…].

Loại mimeinfo.cachenày được tạo tự động từ các loại mime được liệt kê trong các .desktoptệp mà không có thứ tự được xác định rõ, do đó bạn sẽ phải xóa loại mime PDF khỏi Inkscape và tạo lại bộ đệm bằng cách sử dụng update-mime-databasehoặc tạo một mim Ứng dụng (trong toàn cầu /usr/local/share/applications/hoặc cho người dùng của bạn trong ~/.local/share/applications/mimeapps.list).


Trên Debian Linux cổ đại của tôi update-mime-database, tôi cần một cái gì đó khác biệt update-desktop-database ~/.local/share/applications.
Palec

Ngoài ra, xdg-open file.pdfmở Evince (cũng như Nautilus), trong khi Firefox mở xpdf. Sử dụng find ~/.local/share/applications/ /usr/share/applications/ -type f -exec grep -i pdf '{}' +tôi thấy rằng PDF không được đề cập đến trong cấu hình người dùng, chỉ trong /usr/share/applications/mimeinfo.cachevà các *.desktoptệp tương ứng . Các dòng trong mimeinfo.cacheapplication/pdf=xpdf.desktop;evince.desktop;xournal.desktop;. Tôi đoán FF lấy mục đầu tiên. Nhưng làm thế nào để xdg-openbiết tôi muốn Evince?
Palec

1
Sử dụng strace, tôi phát hiện ra rằng xdg-opencác cuộc gọi gnome-opengnome-openđọc /usr/share/gnome/applications/defaults.list, là một liên kết tượng trưng /etc/gnome-vfs-2.0/defaults.list, chỉ định application/pdf=evince.desktop. Rõ ràng, vanilla FF thiếu tích hợp Gnome và do đó bỏ qua ưu tiên này.
Palec

7

Trong Firefox 38.8.0 ESR, trong Debian Lenny với Gnome 2, tôi phát hiện ra rằng ứng dụng được liên kết qua XDG (được mô tả trong câu trả lời của OP ) chỉ được sử dụng khi mở tệp đã tải xuống từ Tải xuống trong Thư viện.

Và ngay cả ở đó, việc triển khai cho kết quả không nhất quán xdg-openvì nó bỏ qua các đường dẫn cụ thể của Gnome (trong trường hợp của tôi /usr/share/gnome/applications/defaults.list, đó là một liên kết tượng trưng đến /etc/gnome-vfs-2.0/defaults.list). Tôi đã phải xác định application/pdf=evince.desktoptrong của tôi ~/.local/share/applications/defaults.list. (Lưu ý rằng defaults.listđã được hợp nhất trong mimeapps.listcác phiên bản gần đây hơn của XDG.)

Thay vì XDG, các khả năng siêu dữ liệu (mailcap) được sử dụng để giải quyết ứng dụng được liên kết cho các trường hợp sử dụng sau:

  • mở tệp đã tải xuống từ bảng tải xuống (hiển thị sau khi nhấn nút tải xuống trên thanh công cụ)
  • ứng dụng mặc định trong hộp thoại tải xuống tập tin thả xuống
  • ứng dụng mặc định trong trình đơn thả xuống trong Tùy chọn → Ứng dụng ( about:preferences#applications)

Tùy chọn trong about:preferences#applicationsđược sử dụng khi điều hướng đến một URL có loại nội dung đó, trừ khi bắt buộc tải xuống.

Mailcap là một cơ chế cũ hơn XDG và có nguồn gốc từ e-mail, nơi MIME cũng đến. Các run-mailcaptiện ích là tương tự như xdg-open. Cấu hình của nó bao gồm ba tệp (ưu tiên giảm dần):

  • ~/.mailcap - mục người dùng
  • /etc/mailcap.order - đặc điểm kỹ thuật đặt hàng trên toàn hệ thống
  • /etc/mailcap - mục toàn hệ thống (cùng định dạng với mục người dùng)

Họ cùng nhau tạo ra một danh sách các mục nhập một dòng chỉ định ứng dụng sẽ được sử dụng cho bất kỳ loại MIME nào. Các mục được khớp từ trên xuống, vì vậy những gì đến trước được ưu tiên.

Để thực hiện thay đổi ưu tiên toàn hệ thống các mục nhập, bạn cần chỉnh sửa /etc/mailcap.ordervà chạy update-mime.

Để ghi đè một số mục hoặc chỉ định toàn bộ hệ thống của riêng bạn, bạn cần chỉnh sửa phần trên cùng (có nghĩa là cho các mục được tạo thủ công) /etc/mailcapvà chạy update-mime. Xem các ý kiến ​​trong phần đầu.

Đối với mục nhập và ghi đè người dùng, sử dụng ~/.mailcap. Những thay đổi có hiệu lực ngay lập tức. Không ~/.mailcap.ordertồn tại; nếu bạn muốn thay đổi các mục nhập ưu tiên, hãy sắp xếp lại chúng một cách vật lý (nếu chúng ở trong ~/.mailcap) hoặc ghi đè chúng bằng phiên bản ưa thích (nếu chúng ở trong /etc/mailcap).

Xem man update-mime, man mailcapman mailcap.order.

Lưu ý rằng một số ứng dụng sử dụng các tiện ích chung (như x-www-browserhoặc pager) thay vì phát hiện ứng dụng ưa thích. Bạn có thể cần phải sử dụng update-alternativeshoặc một cơ chế tương tự để chọn triển khai ưu tiên của một tiện ích chung trong bản phân phối của bạn. Hoặc, để ghi đè một lựa chọn ưu tiên trên toàn hệ thống cho một người dùng cụ thể, hãy đặt các biến môi trường như EDITOR(hoặc VISUAL) PAGERBROWSER. Chúng được hỗ trợ bởi sensible-browservà khác, thường là các công cụ cụ thể hơn (ví dụ: git commitsử dụng EDITORVISUAL).


1
Câu trả lời này vẫn còn hiệu lực trong Firefox Quantum (64.0). Tuy nhiên, mailcap hoạt động tốt hơn firefox thực tế, vì vậy bạn không thể hoàn toàn dựa vào run-mailcap --debug --norun. Tôi có một mục như thế này : application/pdf; sh -c "MEANINGFUL_VAR=preset /usr/bin/evince '%s'". Firefox sau đó gọi sh downloaded_file.pdf. Trên bảng điều khiển của tôi, sau đó tôi thấy, trong số những người khác, /tmp/mozilla_user/downloaded_file.pdf: line 3: 5: command not foundvv Hành vi này sẽ tồn tại mãi mãi, trừ khi có ai đó sửa lỗi này. Xem Mozilla Bugzilla .
u_Ltd.

1
Vì vậy, để tạo trải nghiệm nhất quán cho người dùng của mình, quản trị viên triển khai kết hợp Debian với Gnome, nên đặt mặc định mime bằng cách sử dụng không dưới 4 tiện ích: update-mime(để cập nhật mailcap), xdg-settings(để cập nhật xdg-open), gio(để cập nhật gnome-open) và update-alternatives(để cập nhật cái gọi là tiện ích chung). Và tất nhiên, anh ấy / cô ấy không nên quên quản lý các cài đặt trên toàn hệ thống và cho từng người dùng (có lẽ tốt nhất để chặn khả năng của người dùng để thay đổi mặc định) ... - ah, và tệp handlers.json của FF cũng vậy: mzl.la/1xKrLAq
zenlord
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.