пятница, 16 марта 2012 г.

Ассоциации файлов в Linux

Достаточно часто возникает ситуация, когда у вас есть какой-то тип файлов и программа, которая эти файлы открывает. И хотелось бы, чтобы при попытке, запуска этого файла открывалась эта программа. У многих программ(например mc, nautilus), есть своя база ассоциаций, но это не совсем удобно, так как такой список имеют далеко не все программы, а вот системным пользуются все.



Есть два списка ассоциаций(На самом деле их больше, но лучше редактировать эти два), системный:
/usr/share/applications/defaults.list
И конкретного пользователя:
~/.local/share/applications/defaults.list

Формат у этого файла очень простой, разберем на примере:
[Default Applications]
application/pdf=AdobeReader.desktop
video/mp4=mplayer.desktop
image/jpeg=gpicview.desktop

 В левой части(До знака '='), тип файла. Список типов, вы можете найти в файле:
/usr/share/mime/types
В правой части программа, которая  должна запускать этот тип файлов. Список программ вы можете найти в папке:
/usr/share/applications/
 Кроме того, вы можете использовать консольную ультиту xdg-mime, добавить новую ассоциации можно например так:
xdg-mime defaults AdobeReader.desktop application/pdf
И здесь возникает не совсем понятная ситуаци, ибо эта ультилита записывает асоциации в файл:
~/.local/share/applications/mimeapps.list.
Более того, вы можете воспользоваться командой:
update-desktop-database /usr/share/applications/
Которая на основе, ваших desktop файлов с прописанными MIME типами сделает кэш:
/usr/share/applications/mimeinfo.cache
И пропишет для всех ваших программ MIME типы автоматически. Но это не сработает если у вас например две программы для открытия pdf файлов. В этом случае лучше инструкцию вручную, как сказано в начале руководства.

2 комментария: