Di mana asosiasi file disimpan?

67

Bagaimana cara Ubuntu atau sistem Linux lainnya menyimpan asosiasi file?

Apakah ada /etc/asscociationsfile atau sesuatu?

Saya tahu bahwa saya dapat mengklik kanan pada file dan mengubahnya melalui "buka dengan", tapi saya hanya ingin tahu bagaimana itu disimpan secara internal.

Stann
sumber

Jawaban:

67

Manajer file (Nautilus, secara default) menggunakan tipe file MIME untuk menentukan program mana yang akan dibuka. Ketika aplikasi diinstal, ia dapat menentukan jenis MIME apa yang dapat dibuka dan perintah yang digunakan untuk membuka file dalam file .desktop yang ditempatkan /usr/share/applications. Ini adalah file yang digunakan untuk menu, pintasan desktop, dll.

Misalnya, GIMP memiliki file .desktop berikut:

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

Lihat MimeTypebidang - ini mencantumkan jenis MIME yang didukung. ExecBidang ini memberitahu sistem untuk menggunakan perintah gimp-2.7 %U, menggantikan '% U' dengan file yang akan dibuka. (Catatan GIMP 2.7 adalah versi yang telah saya instal dari PPA, jadi lebih tinggi dari versi saat ini di repositori Ubuntu).

Ketika paket aplikasi diinstal, sistem mengekstrak data tipe MIME ini ke dalam basis data yang lebih mudah diakses karena melihat di setiap file .desktop akan memakan waktu terlalu lama jika dilakukan setiap kali file dibuka.

Ini memberi tahu sistem aplikasi apa yang dapat digunakan untuk tipe MIME itu dan menyediakan aplikasi dalam daftar 'Open With'. Defaultnya didefinisikan di tempat lain. File /usr/share/applications/defaults.listmenyediakan informasi untuk standar sistem. Kecuali Anda memilih sebaliknya, ini adalah aplikasi yang digunakan saat Anda 'Membuka' file.

dv3500ea
sumber
7
Setelah mengubah tipe MIME dalam /usr/share/applications .desktopfile, apakah ada perintah untuk membuat kembali database MIME untuk melihat asosiasi baru beraksi?
Redsandro
12
Iya. sudo update-desktop-databaseLihat jarrpa.net/2011/10/10/28/...
NoBugs
Tempat yang lebih tepat untuk perubahan lokal adalah /usr/local/share/applications. Saya pikir gtk terlihat di sana juga, secara default. Itu pada sistem saya, tetapi sudah ditingkatkan (tidak diinstal ulang) sejak Ubuntu 7.04 atau lebih.
Peter Cordes
2
Ubuntu tampaknya mengikuti freedesktop.org: standards.freedesktop.org/mime-apps-spec/… , proyek yang luar biasa .
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
23

Untuk melengkapi jawaban luar biasa dv3500ea, saya ingin menambahkan beberapa informasi tentang apa yang terjadi ketika Anda mengubah asosiasi Anda.

Sementara defaults.list (yang dapat Anda temukan dengan mengetikkan 'loc defaults.list') memberikan daftar aplikasi yang terkait dengan setiap jenis MIME, setiap kustomisasi yang Anda buat disimpan di direktori home Anda, di ~ / .local / bagikan / aplikasi / mimeapps.list. Jadi, jika Anda menambah atau menghapus asosiasi, atau mengubah asosiasi default, file ini diperbarui.

Panduan Administrasi Sistem Desktop GNOME di http://library.gnome.org/admin/system-admin-guide/stable/ tampaknya tidak membahas mimeapps.list, tetapi saya menemukan uraian berikut di http: //live.gnome .org / SysAdminGuideUpdate :

mimeapps.list terletak di $ XDG_DATA_DIRS / aplikasi. Tujuannya adalah untuk menambah atau menghapus asosiasi mime dari aplikasi. nautilus menulis ~ / .local / share / aplikasi / mimeapps.list ketika pengguna membuat perubahan dalam dialog "Buka Dengan".


sumber
1
Tetapi menggunakan Ubuntu 12.04, saya menyadari bahwa mimeapps.listitu ditimpa oleh entri di defaults.list.
feeela
1
pada 14.04, saya bisa s / vlc / mplayer / di saya ~/.local/share/applications/mimeapps.list, dan menjalankan proses seperti pcmanfm mengambil perubahan tanpa memulai ulang. (mplayer.desktop hanya menjalankan mplayer. Saya punya satu yang tergeletak di instal mplayer lama di / usr / local, saya kira. IDK jika MimeType=list;diperlukan atau tidak.
Peter Cordes
Lebih tepatnya, mimeapps.listbisa di mana saja di jalur pencarian berikut: spesifikasi.freedesktop.org/mime-apps-spec/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
18

Saya menemukan bahwa di sistem saya (Debian Jessie) ada juga ~/.config/mimeapps.listyang memiliki asosiasi yang secara tidak sengaja saya buat untuk membuka jenis file tertentu dengan gedit. Tidak ada cara standar untuk memperbaiki ini (pengaturan aplikasi default, Thunar terbuka dengan properti) mencerminkan hal ini, tetapi gedit adalah aplikasi default.

Saya dapat menghapus garis dari ~/.config/mimeapps.listdan sekarang aplikasi yang benar membuka file.

Bryan Leaman
sumber
2
Terima kasih, Anda tidak sengaja membantu saya memperbaiki Firefox yang membuka semuanya di Gedit. Pada openSUSE 13.2 saya menghapus baris dengan "application / octet-stream = org.gnome.gedit.desktop;". :)
user31389
3
sejak ubuntu 15.04 modifikasi khusus pengguna juga disimpan di ~/.config/mimeapps.list.
DJCrashdummy
2
Lebih tepatnya, mimeapps.listdapat di mana saja di jalur pencarian berikut: spesifikasi.freedesktop.org/mime-apps-spec/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
8

Saya menemukan tautan ini tentang asosiasi default, mungkin bermanfaat. https://wiki.archlinux.org/index.php/Default_Applications
untuk asosiasi global:

/usr/share/applications/mimeapps.list

per asosiasi pengguna:

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

sintaksnya adalah sebagai berikut:

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

Bagian [Added Associations] digunakan untuk menentukan aplikasi yang disukai (default) dalam mengurangi preferensi. yang berarti desktopfile1 adalah yang paling disukai dan desktopfileN paling tidak disukai.
Bagian [Asosiasi Dihapus] digunakan untuk menghapus secara eksplisit asosiasi yang diwarisi sebelumnya.

IdontCareAboutReputationPoints
sumber
1
Ini berasal dari situs archlinux , tidak berlaku di Ubuntu, /usr/share/applications/mimeapps.listtidak ada.
guntbert
Terima kasih telah menunjukkan ini, namun kata pengguna di Ubuntu atau sistem Linux lainnya, ini berarti ini adalah jawaban untuk pertanyaannya juga: P.
IdontCareAboutReputationPoints
5
Jawaban ini sangat oke jika Anda ganti mimeapps.desktopdengandefaults.desktop
szx
8

Saya dapat mengatur asosiasi seperti ini:

xdg-mime default xnview.desktop image/jpeg

Anda juga dapat menghapus asosiasi dan melakukan hal-hal lain: man xdg-mime

Saya tidak perlu lari sudo update-desktop-database.

warvariuc
sumber
7

Buat file truecrypt.desktopdi ~/.local/share/applicationsdengan baris berikut:

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

kemudian edit file ~/.local/share/applications/mimeapps.listdan tambahkan baris berikut:

application/octet-stream=truecrypt.desktop

Saya menemukan tipe mime dari Truecrypt dengan mengikuti menjalankan perintah ini:

file --mime-type -b <any truecrypt filename>
Blindfreddy
sumber
Jawaban yang bagus, karena berfungsi untuk mereka yang menggunakan KDE, tetapi memiliki beberapa program asli gtk, seperti firefox.
naught101
5

mimeapps.list jalur pencarian

Orang lain telah menyebutkan file ini, tetapi tidak ada yang menjelaskan lokasinya dengan tepat.

Standar freedesktop.org mengatakan di https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

Urutan pencarian untuk file ini adalah sebagai berikut:

$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

dan kemudian nilai default untuk variabel lingkungan tersebut diberikan di https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html :

  • $XDG_DATA_HOME: $HOME/.local/share
  • $XDG_CONFIG_HOME: $HOME/.config
  • $XDG_DATA_DIRS: tidak ada, ditambahkan ke XDG_DATA_HOME
  • $XDG_CONFIG_DIRS: tidak ada, ditambahkan ke XDG_CONFIG_HOME

Versi Ubuntu yang lebih lama mungkin tidak memeriksa ~/.config, jadi pastikan Anda juga mencoba ~/.local/share.

Perintah seperti:

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

akan secara otomatis mengedit file-file itu.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
2

Untuk semua pengguna:

/usr/share/applications/defaults.list

Setiap pengguna memiliki file konfigurasi untuk mengganti default ini:

~ / .config / mimeapps.list

lihat juga https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html untuk tempat-tempat yang mungkin digunakan untuk mengganti defaut.

Anda harus mengetahui tipe mime dari file yang ingin Anda ubah hubungannya.

Juga semua asosiasi dapat ditangani-diubah di baris perintah menggunakan:

xdg-mime

Xoristzatziki
sumber
1

Freedesktop.org (sebelumnya bernama X Desktop Group, dengan demikian singkatan "XDG") adalah grup yang saat ini mengendarai standar X seperti ini ( pelajari lebih lanjut di Wikipedia ).

Jawaban warvariuc sudah menyebutkan penggunaan xdg-mime seperti:

xdg-mime default xnview.desktop image/jpeg

 

Setelah banyak bermain dengan editor gambar dan pemirsa, saya berakhir dengan pemirsa yang berbeda untuk jenis gambar yang berbeda dengan hampir tidak ada konsistensi, terutama di antara jenis gambar yang lebih jarang.

Saya mengambil perintah di atas dan menetapkannya untuk masing-masing jenis MIME yang dikendalikan oleh pemirsa gambar dan kemudian membuat yang baru image-viewer.desktopdengan mengkloning salah satu dari mereka (ini opsional, Anda hanya dapat menggunakan kembali favorit Anda). Selanjutnya, saya memverifikasi secara manual bahwa tidak ada tipe MIME yang tidak sesuai dengan aplikasi pilihan saya yang baru. Akhirnya, saya menetapkan aplikasi itu sebagai default untuk semua jenis MIME aplikasi lain:

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

Ini memeriksa .desktopfile untuk masing-masing pemirsa ( Ristretto , Geeqie , dan GThumb dalam kasus saya), mengekstrak definisi MIME (yang diawali oleh MimeType=dan kemudian berisi daftar tanda titik koma), menghapus label kata pengantar (yang sebelumnya cocok), dan membagi daftar menjadi satu entri per baris. sort -ukemudian menghapus garis-garis yang berlebihan, lalu mereka diserahkan xdg-mimeuntuk mengatur default baru.

(Jika Anda ingin menguji ini sebelum menjalankannya langsung, ubah xargske xargs echodan itu akan mencetak perintah yang dihasilkan alih-alih menjalankannya.)

Teknik ini harus bekerja untuk apa pun yang Anda ingin mendapatkan kembali untuk aplikasi target. Anda bahkan tidak perlu membuat .desktopfile baru (Anda dapat menggunakan yang sudah ada). Saya melakukan langkah ekstra itu sehingga ketika saya mau tidak mau mengubah kesetiaan saya di antara pratinjau gambar, saya hanya perlu mengubah satu file itu.

Adam Katz
sumber
1

Di Ubuntu 18.04, saya telah menemukan urutan prioritas sebagai berikut, dari yang terkuat ke yang terlemah:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Buka Dengan Aplikasi Lain" akan memperbarui ini)
  4. ~/.local/share/applications/mimeapps.list
  5. Kecocokan pertama yang ditemukan dalam mimeinfo.cacheregistri aplikasi yang kompatibel, yang dihasilkan dari .desktopfile yang ada pada /usr/share/applicationsdan /usr/local/share/applications, dan dapat dibuat kembali menggunakan update-desktop-database.
  6. (Tidak pernah dipakai) /etc/gnome/defaults.list
Jimmy He
sumber