Hiệp hội tập tin được lưu trữ ở đâu?


67

Làm thế nào để Ubuntu hoặc bất kỳ hệ thống Linux khác lưu trữ các hiệp hội tập tin?

Có một số /etc/asscociationstập tin hoặc một cái gì đó?

Tôi biết rằng tôi có thể nhấp chuột phải vào tệp và thay đổi tệp thông qua "mở bằng", nhưng tôi chỉ tò mò muốn biết nó được lưu trữ nội bộ như thế nào.

Câu trả lời:


67

Trình quản lý tệp (Nautilus, theo mặc định) sử dụng loại MIME của tệp để xác định chương trình nào sẽ mở. Khi một ứng dụng được cài đặt, nó có thể chỉ định loại MIME nào nó có thể mở và lệnh sử dụng để mở các tệp trong tệp .desktop được đặt trong đó /usr/share/applications. Đây là tập tin được sử dụng cho menu, phím tắt trên màn hình, v.v.

Ví dụ: GIMP có tệp .desktop sau:

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

Xem MimeTypetrường - danh sách này liệt kê các loại MIME được hỗ trợ. ExecTrường cho hệ thống sử dụng lệnh gimp-2.7 %U, thay thế '% U' bằng các tệp để mở. (Lưu ý GIMP 2.7 là phiên bản tôi đã cài đặt từ PPA, do đó cao hơn phiên bản hiện tại trong kho Ubuntu).

Khi gói ứng dụng được cài đặt, hệ thống sẽ trích xuất dữ liệu loại MIME này vào cơ sở dữ liệu dễ truy cập hơn vì việc tìm kiếm trong mỗi tệp .desktop sẽ mất quá nhiều thời gian nếu nó được thực hiện mỗi khi tệp được mở.

Điều này cho hệ thống biết những ứng dụng nào có thể được sử dụng cho loại MIME đó và cung cấp các ứng dụng trong danh sách 'Mở bằng'. Mặc định được định nghĩa ở nơi khác. Các tập tin /usr/share/applications/defaults.listcung cấp thông tin cho các mặc định hệ thống. Trừ khi bạn chọn cách khác, đây là những ứng dụng được sử dụng khi bạn 'Mở' tệp.


7
Sau khi thay đổi các loại MIME trong /usr/share/applications .desktoptệp, có lệnh tạo lại cơ sở dữ liệu MIME đó để xem các liên kết mới đang hoạt động không?
Redsandro

12
Đúng. sudo update-desktop-databaseXem jarrpa.net/2011/10/11/10
NoBugs

Một nơi thích hợp hơn cho những thay đổi địa phương là /usr/local/share/applications. Tôi nghĩ rằng gtk cũng nhìn ở đó, theo mặc định. Nó có trên hệ thống của tôi, nhưng nó đã được nâng cấp (không được cài đặt lại) kể từ Ubuntu 7.04 trở lên.
Peter Cordes

2
Ubuntu dường như tuân theo freedesktop.org: standards.freedesktop.org/mime-apps-spec/... , một tuyệt vời của dự án.
Ciro Santilli 心 心

23

Để bổ sung câu trả lời tuyệt vời của dv3500ea, tôi muốn thêm một số thông tin về những gì xảy ra khi bạn thay đổi liên kết của mình.

Trong khi defaults.list (mà bạn có thể tìm thấy bằng cách nhập 'xác định vị trí mặc định.list') cung cấp danh sách các ứng dụng được liên kết với từng loại MIME, mọi tùy chỉnh bạn thực hiện đều được lưu trong thư mục chính của bạn, trong ~ / .local / chia sẻ / ứng dụng / mim Ứng dụng.list. Vì vậy, nếu bạn thêm hoặc xóa liên kết hoặc thay đổi liên kết mặc định, tệp này được cập nhật.

Các GNOME Desktop Hướng dẫn Quản trị hệ thống tại http://library.gnome.org/admin/system-admin-guide/stable/ không xuất hiện để thảo luận mimeapps.list, nhưng tôi thấy các mô tả sau đây về http: //live.gnome .org / SysAdminGuideUpdate :

mim Ứng dụng.list nằm trong $ XDG_DATA_DIRS / ứng dụng. Mục đích của nó là để thêm hoặc loại bỏ các hiệp hội mime khỏi các ứng dụng. nautilus ghi ~ / .local / share / application / mim Ứng dụng.list khi người dùng thực hiện thay đổi trong hộp thoại "Mở bằng".


1
Nhưng sử dụng Ubuntu 12.04, tôi nhận ra rằng phần mimeapps.listbị ghi đè bởi các mục trong defaults.list.
feeela

1
vào ngày 14.04, tôi đã có thể s / vlc / mplayer / ~/.local/share/applications/mimeapps.listvà chạy các quy trình như pcmanfm chọn các thay đổi mà không cần khởi động lại. (mplayer.desktop chỉ chạy mplayer. Tôi có một người nằm xung quanh từ một trình cài đặt mplayer cũ trong / usr / local, tôi đoán vậy. IDK nếu có MimeType=list;cần thiết hay không.
Peter Cordes

Chính xác hơn, mimeapps.listcó thể bất cứ nơi nào trong con đường tìm kiếm sau: specifications.freedesktop.org/mime-apps-spec/...
Ciro Santilli新疆改造中心法轮功六四事件

18

Tôi thấy rằng trên hệ thống của mình (Debian Jessie) cũng ~/.config/mimeapps.listcó một liên kết mà tôi vô tình tạo ra để mở một loại tệp cụ thể bằng gedit. Không có cách nào để sửa lỗi này (cài đặt ứng dụng mặc định, mở bằng thuộc tính của Thunar ) phản ánh điều này, nhưng gedit là ứng dụng mặc định.

Tôi đã có thể xóa dòng từ ~/.config/mimeapps.listvà bây giờ ứng dụng chính xác mở tệp.


2
Cảm ơn, bạn đã vô tình giúp tôi sửa lỗi Firefox mở mọi thứ trong Gedit. Trên openSUSE 13.2, tôi đã xóa dòng bằng "application / octet-stream = org.gnome.gedit.desktop;". :)
dùng31389

3
kể từ ubfox 15.04, các sửa đổi dành riêng cho người dùng cũng được lưu trữ trong ~/.config/mimeapps.list.
DJCrashdummy

2
Chính xác hơn, mimeapps.listcó thể bất cứ nơi nào trong con đường tìm kiếm sau: specifications.freedesktop.org/mime-apps-spec/...
Ciro Santilli新疆改造中心法轮功六四事件

8

Tôi tìm thấy liên kết này liên quan đến liên kết mặc định, nó có thể hữu ích. https://wiki.archlinux.org/index.php/Default_Applecting
cho hiệp hội toàn cầu:

/usr/share/applications/mimeapps.list

mỗi hiệp hội người dùng:

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

cú pháp như sau:

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

Phần [Hiệp hội đã thêm] được sử dụng để chỉ định các ứng dụng ưu tiên (mặc định) trong việc giảm tùy chọn. có nghĩa là desktopfile1 là ưu tiên nhất và desktopfileN ít được ưu tiên nhất.
Phần [Hiệp hội đã xóa] được sử dụng để xóa rõ ràng mọi liên kết được kế thừa trước đó.


1
Điều này xuất phát từ một trang web archlinux , không nhất thiết phải áp dụng trên Ubuntu, /usr/share/applications/mimeapps.listkhông tồn tại.
guntbert

Cảm ơn bạn đã chỉ ra điều này, tuy nhiên người dùng đã nói trong Ubuntu hoặc các hệ thống Linux khác, điều này có nghĩa đây cũng là một câu trả lời cho câu hỏi của anh ấy: P.
IdontCare AboutReputingPoints

5
Câu trả lời này là hoàn toàn ok nếu bạn thay thế mimeapps.desktopbằngdefaults.desktop
szx

8

Tôi đã có thể thiết lập một hiệp hội như thế này:

xdg-mime default xnview.desktop image/jpeg

Bạn cũng có thể xóa các hiệp hội và làm những việc khác: man xdg-mime

Tôi không cần chạy sudo update-desktop-database.


7

Tạo một tệp truecrypt.desktoptrong ~/.local/share/applicationscác dòng sau:

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

sau đó chỉnh sửa tệp ~/.local/share/applications/mimeapps.listvà thêm dòng sau:

application/octet-stream=truecrypt.desktop

Tôi đã tìm ra loại Truecrypt mime bằng cách chạy lệnh này:

file --mime-type -b <any truecrypt filename>

Câu trả lời hay, bởi vì nó hoạt động cho những người sử dụng sử dụng kde, nhưng có một vài chương trình gốc gtk, như firefox.
ness101

5

mimeapps.list con đường tìm kiếm

Những người khác đã đề cập đến tập tin này, nhưng không ai giải thích chính xác vị trí của nó.

Tiêu chuẩn freedesktop.org cho biết tại https://specutions.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

Thứ tự tra cứu cho tập tin này như sau:

$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

và sau đó các giá trị mặc định cho các biến môi trường đó được đưa ra tại https://specutions.freedesktop.org/basingir-spec/basingir-spec-0.6.html :

  • $XDG_DATA_HOME: $HOME/.local/share
  • $XDG_CONFIG_HOME: $HOME/.config
  • $XDG_DATA_DIRS: không, được thêm vào XDG_DATA_HOME
  • $XDG_CONFIG_DIRS: không, được thêm vào XDG_CONFIG_HOME

Các phiên bản cũ hơn của Ubuntu có thể không kiểm tra ~/.config, vì vậy hãy đảm bảo bạn cũng thử ~/.local/share.

Các lệnh như:

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

sẽ tự động chỉnh sửa các tập tin đó.


2

Cho tất cả người dùng:

/usr/share/appluggest/defaults.list

Mỗi người dùng có một tệp cấu hình để ghi đè các mặc định này:

~ / .config / mim Ứng dụng.list

xem thêm https://specutions.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html để biết các địa điểm có thể được sử dụng để ghi đè mặc định.

Bạn phải biết loại mime của tệp bạn muốn thay đổi liên kết.

Ngoài ra tất cả các hiệp hội có thể được xử lý thay đổi trong dòng lệnh bằng cách sử dụng:

xdg-mime


1

Freedesktop.org (trước đây gọi là Nhóm X Desktop, do đó viết tắt "XDG") là nhóm hiện đang lái các tiêu chuẩn X như thế này ( tìm hiểu thêm tại Wikipedia ).

Câu trả lời của warvariuc đã đề cập đến việc sử dụng xdg-mime như:

xdg-mime default xnview.desktop image/jpeg

 

Sau nhiều lần chơi với người chỉnh sửa hình ảnh và người xem, tôi đã kết thúc với những người xem khác nhau cho các loại hình ảnh khác nhau mà hầu như không có sự thống nhất, đặc biệt là trong số các loại hình ảnh hiếm hơn.

Tôi đã nhận lệnh trên và gán nó cho từng loại MIME do người xem hình ảnh kiểm soát và sau đó tạo một cái mới image-viewer.desktopbằng cách nhân bản một trong số chúng (đây là tùy chọn, bạn chỉ có thể sử dụng lại yêu thích của mình). Tiếp theo, tôi đã xác minh thủ công rằng không có loại MIME nào không tương thích với ứng dụng ưa thích mới của tôi. Cuối cùng, tôi đặt ứng dụng đó thành mặc định cho tất cả các loại MIME của các ứng dụng khác:

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

Việc này kiểm tra các .desktoptệp cho từng người xem ( Ristretto , GeeqieGThumb trong trường hợp của tôi), trích xuất định nghĩa MIME (được mở đầu bằng MimeType=và sau đó chứa danh sách được phân cách bằng dấu chấm phẩy), xóa nhãn tiền tố (đã khớp trước đó) và xóa nhãn chia danh sách thành một mục trên mỗi dòng. sort -usau đó xóa các dòng thừa, sau đó chúng được chuyển sang xdg-mimeđể đặt mặc định mới.

(Nếu bạn muốn kiểm tra điều này trước khi chạy trực tiếp, hãy đổi xargsthành xargs echovà nó sẽ in lệnh kết quả thay vì chạy nó.)

Kỹ thuật này sẽ hoạt động cho bất cứ điều gì bạn muốn lấy lại cho một ứng dụng mục tiêu. Bạn thậm chí không cần tạo một .desktoptệp mới (bạn có thể sử dụng tệp hiện có). Tôi đã thực hiện thêm bước đó để khi tôi chắc chắn thay đổi lòng trung thành của mình giữa những người xem trước hình ảnh, tôi chỉ cần thay đổi một tệp đó.


1

Trên Ubuntu 18.04, tôi đã tìm thấy thứ tự ưu tiên như sau, từ mạnh nhất đến yếu nhất:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Mở bằng ứng dụng khác" sẽ cập nhật thông tin này)
  4. ~/.local/share/applications/mimeapps.list
  5. Trận đấu đầu tiên gặp phải trong mimeinfo.cachesổ đăng ký của các ứng dụng tương thích, được tạo từ các .desktoptệp có trong /usr/share/applications/usr/local/share/applications, và có thể được tạo lại bằng cách sử dụng update-desktop-database.
  6. (Không bao giờ sử dụng) /etc/gnome/defaults.list
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.