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

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

Есть ли некоторые /etc/asscociations файл или что-то?

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

75
задан 11 December 2013 в 06:45

10 ответов

Файловый менеджер (Наутилус, по умолчанию) использует тип 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 и, приложения в 'Открывают With' список. Значение по умолчанию определяется в другом месте. Файл /usr/share/applications/defaults.list предоставляет информацию для системных значений по умолчанию. Если Вы не выбираете иначе, это приложения, использованные, когда Вы 'Открываете' файл.

67
ответ дан 22 November 2019 в 23:31

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

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

Настольное Руководство Системного администрирования GNOME по http://library.gnome.org/admin/system-admin-guide/stable/, кажется, не обсуждает mimeapps.list, но я нашел следующее описание на http://live.gnome.org/SysAdminGuideUpdate:

mimeapps.list расположен в $XDG_DATA_DIRS/applications. Его цель состоит в том, чтобы добавить или удалить ассоциации пантомимы из приложений. наутилус пишет ~/.local/share/applications/mimeapps.list, когда пользователь вносит изменения в, "Открывают With" диалоговое окно.

24
ответ дан 22 November 2019 в 23:31

Создайте файл 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

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

file --mime-type -b <any truecrypt filename>
7
ответ дан 22 November 2019 в 23:31

Я нашел эту ссылку относительно ассоциации по умолчанию, это могло бы быть полезно. https://wiki.archlinux.org/index.php/Default_Applications
для глобальной ассоциации:

/usr/share/applications/mimeapps.list

на ассоциацию пользователей:

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

синтаксис следующие:

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

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

8
ответ дан 22 November 2019 в 23:31

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

Я смог удалить строку из ~/.config/mimeapps.list и теперь соответствующее приложение открывает файл.

18
ответ дан 22 November 2019 в 23:31

Я смог установить ассоциацию как это:

xdg-mime default xnview.desktop image/jpeg

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

Я не должен был работать sudo update-desktop-database.

8
ответ дан 22 November 2019 в 23:31

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

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

В стандарте freedesktop.org говорится в https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html:

Порядок поиска на этот файл следующие:

$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

и затем значения по умолчанию для тех переменных среды даны в 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: ни один, добавленный к 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

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

5
ответ дан 22 November 2019 в 23:31

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

ответ warvariuc уже упоминает использование xdg-пантомимы как:

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 файлы для каждого из средств просмотра (Ristretto, Geeqie, и GThumb в моем случае), извлекает определение MIME (который снабжен предисловием MimeType= и затем содержит разграниченный точкой с запятой список), удаляет (ранее подобранный) маркировка предисловия и разделяет список на одну запись на строку. sort -u затем удаляет избыточные строки, затем им вручают xdg-mime установить новые значения по умолчанию.

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

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

1
ответ дан 22 November 2019 в 23:31

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

/usr/share/applications/defaults.list

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

~/.config/mimeapps.list

см. также https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html для мест, которые могли бы использоваться для переопределения defauts.

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

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

xdg-пантомима

2
ответ дан 22 November 2019 в 23:31

На Ubuntu 18.04 я нашел порядок очередности быть следующим образом от самого сильного до самого слабого:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Открытый С Другим Приложением" обновит это),
  4. ~/.local/share/applications/mimeapps.list
  5. Первое соответствие, с которым встречаются, в mimeinfo.cache реестр совместимых приложений, которые сгенерированы от .desktop файлы, существующие в /usr/share/applications и /usr/local/share/applications, и может быть повторно создан с помощью update-desktop-database.
  6. (Никогда не использовал), /etc/gnome/defaults.list
1
ответ дан 22 November 2019 в 23:31

Другие вопросы по тегам:

Похожие вопросы: