Где хранятся файловые ассоциации?

54

Как Ubuntu или любые другие Linux-системы хранят ассоциации файлов?

Есть ли файл /etc/asscociations или что-то еще?

Я знаю, что могу щелкнуть правой кнопкой мыши по файлу и изменить его с помощью «open with», но мне просто интересно узнать, как он хранится внутри.

    
задан Stann 07.12.2010 в 21:29
источник

9 ответов

56

Файловый менеджер (Nautilus, по умолчанию) использует тип MIME файла, чтобы определить, какая программа для откройте его. Когда приложение установлено, оно может указать типы MIME, которые он может открыть, и команду, чтобы использовать для открытия файлов в файле .desktop, который помещается в /usr/share/applications . Это файл, используемый для меню, ярлыков на рабочем столе и т. Д.

Например, GIMP имеет следующий файл .desktop:

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

См. поле MimeType - в этом списке указаны поддерживаемые типы MIME. Поле Exec сообщает системе использовать команду gimp-2.7 %U , заменяя '% U' открываемыми файлами. (Примечание. GIMP 2.7 - это версия, которую я установил из PPA, поэтому выше, чем текущая версия в репозиториях Ubuntu).

Когда пакет приложений установлен, система извлекает данные этого типа MIME в более легкодоступную базу данных, так как поиск в каждом файле .desktop занимает слишком много времени, если это было сделано каждый раз, когда файл был открыт.

Это сообщает системе, какие приложения могут использоваться для этого типа MIME и предоставляют приложения в списке «Открыть с». Значение по умолчанию определено в другом месте. Файл /usr/share/applications/defaults.list предоставляет информацию о системных значениях по умолчанию. Если вы не выбрали иначе, это приложения, используемые при открытии файла.

    
ответ дан dv3500ea 07.12.2010 в 21:51
источник
21

Чтобы добавить отличный ответ dv3500ea, я хотел бы добавить некоторую информацию о том, что происходит, когда вы меняете свои ассоциации.

В то время как defaults.list (который вы можете найти, набрав «locate defaults.list»), содержит список приложений, связанных с каждым типом MIME, любые сделанные вами настройки хранятся в вашем домашнем каталоге в ~ / .local / доля / приложений / mimeapps.list. Поэтому, если вы добавляете или удаляете ассоциации или изменяете ассоциацию по умолчанию, этот файл обновляется.

Руководство администратора системы настольных систем GNOME в Ссылка не обсуждает mimeapps.list , но я нашел следующее описание на Ссылка :

  

mimeapps.list находится в   $ XDG_DATA_DIRS / приложения. это   Цель состоит в том, чтобы добавить или удалить mime   ассоциации из приложений.   nautilus пишет   ~ / .local / доля / приложений / mimeapps.list   когда пользователь вносит изменения в   Диалоговое окно «Открыть с».

    
ответ дан user8979 29.01.2011 в 12:42
12

Я обнаружил, что в моей системе (Debian Jessie) есть ~/.config/mimeapps.list , у которого была ассоциация, которую я случайно создал, чтобы открыть определенный тип файла с помощью gedit. Ни один из стандартных способов исправления этого (параметры приложения по умолчанию, свойство открывать с помощью Thunar) отразили это, но gedit был стандартным приложением.

Мне удалось удалить строку из ~/.config/mimeapps.list , и теперь правильное приложение открывает файл.

    
ответ дан Bryan Leaman 10.01.2015 в 19:24
6

Создайте файл truecrypt.desktop в ~/.local/share/applications со следующими строками:

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

затем отредактируйте файл ~/.local/share/applications/mimeapps.list и добавьте следующую строку:

application/octet-stream=truecrypt.desktop

Я узнал mime-тип Truecrypt, выполнив следующую команду:

file --mime-type -b <any truecrypt filename>
    
ответ дан Blindfreddy 13.03.2012 в 17:32
6

Мне удалось установить такую ​​ассоциацию:

xdg-mime default xnview.desktop image/jpeg

Вы также можете удалить ассоциации и сделать другие вещи: man xdg-mime

Мне не нужно было запускать sudo update-desktop-database .

    
ответ дан warvariuc 21.06.2015 в 12:00
5

Я нашел эту ссылку относительно ассоциации по умолчанию, это может быть полезно. Ссылка
для глобальной ассоциации:

/usr/share/applications/mimeapps.list

для каждой ассоциации пользователей:

~/.local/share/applications/mimeapps.list
Синтаксис

следующий:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
Раздел

[Добавленные ассоциации] используется для указания предпочтительных (по умолчанию) приложений при уменьшении предпочтений. что означает desktopfile1 , наиболее предпочтительным является desktopfileN .
[Удаленные ассоциации] раздел используется для явного удаления ранее унаследованных ассоциации.

    
ответ дан MusuNaji 23.08.2013 в 10:16
1

mimeapps.list путь поиска

Другие упомянули этот файл, но никто не объяснил его местоположение точно.

В стандарте freedesktop.org указано Ссылка :

  

Порядок поиска для этого файла выглядит следующим образом:

$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

, а затем значения по умолчанию для этих переменных окружения приведены в Ссылка :

  • $XDG_DATA_HOME : $HOME/.local/share
  • $XDG_CONFIG_HOME : $HOME/.config
  • $XDG_DATA_DIRS : нет, добавлено к XDG_DATA_HOME
  • $XDG_CONFIG_DIRS : нет, добавлено к XDG_CONFIG_HOME

Старые версии Ubuntu могут не проверять ~/.config , поэтому убедитесь, что вы также попробовали ~/.local/share .

Команды вроде:

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

автоматически отредактирует эти файлы.

    
ответ дан Ciro Santilli 包子露宪 六四事件 法轮功 19.01.2017 в 10:22
0

Freedesktop.org (ранее называемая X Desktop Group, таким образом аббревиатура «XDG») является группой, которая в настоящее время управляет стандартами X, такими как ( узнать больше в Википедии ).

ответ warvariuc уже упоминает xdg-mime , например:

xdg-mime default xnview.desktop image/jpeg

После множества игр с редакторами изображений и зрителями я попал в разные зрители для разных типов изображений, практически без согласованности, особенно среди более редких типов изображений.

Я взял указанную выше команду и присвоил ее каждому из MIME-типов, контролируемых зрителями изображений, а затем создал новый image-viewer.desktop , клонировав один из них (это необязательно, вы можете просто повторно использовать свой любимый). Затем я вручную проверил, что ни один из типов MIME не будет совместим с моим новым предпочтительным приложением. Наконец, я установил это приложение как значение по умолчанию для всех типов MIME других приложений:

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

Здесь рассматриваются файлы .desktop для каждого из зрителей ( Ристретто , Geeqie и GThumb в моем случае), извлекает определение MIME (которое предварительно содержит MimeType= , а затем содержит список с разделителями с запятой), удаляет метку (предварительно сопоставленную) предисловия и разбивает список на один запись в строке. sort -u затем удаляет избыточные строки, затем они передаются xdg-mime для установки новых значений по умолчанию.

(Если вы хотите протестировать это, прежде чем запускать его в прямом эфире, измените xargs на xargs echo , и он будет печатать полученную команду, а не запускать ее.)

Этот метод должен работать на все, что вы хотите восстановить для целевого приложения. Вам даже не нужно создавать новый файл .desktop (вы можете использовать существующий). Я сделал этот дополнительный шаг, так что, когда я неизбежно меняю свою преданность между предварительным просмотром изображений, мне просто нужно изменить этот файл.

    
ответ дан Adam Katz 08.09.2016 в 03:36
0

Для всех пользователей:

  

/usr/share/applications/defaults.list

Каждый пользователь имеет конфигурационный файл для переопределения этих значений по умолчанию:

  

~ / .config / mimeapps.list

см. также Ссылка для мест, которые могут быть использованы для переопределения defauts.

Вы должны знать тип mime файла, который вы хотите изменить, это ассоциация.

Также все ассоциации могут обрабатываться-изменяться в командной строке, используя:

  

XDG-мим

    
ответ дан Xoristzatziki 02.08.2017 в 09:19