Linux Way
В этом блоге я делюсь советами по настройке\использованию Linux и больше ничем не делюсь. Не от жадности, а от желания мира на всей Земле. Я стараюсь следовать принципу KISS, когда это возможно и не понижает удобство работы. По возможности это отражено в моих советах. Удачи, друзья мои.
пятница, 16 марта 2012 г.
Ассоциации файлов в Linux
Достаточно часто возникает ситуация, когда у вас есть какой-то тип файлов и программа, которая эти файлы открывает. И хотелось бы, чтобы при попытке, запуска этого файла открывалась эта программа. У многих программ(например mc, nautilus), есть своя база ассоциаций, но это не совсем удобно, так как такой список имеют далеко не все программы, а вот системным пользуются все.
Есть два списка ассоциаций(На самом деле их больше, но лучше редактировать эти два), системный:
[Default Applications]
application/pdf=AdobeReader.desktop
video/mp4=mplayer.desktop
image/jpeg=gpicview.desktop
В правой части программа, которая должна запускать этот тип файлов. Список программ вы можете найти в папке:
Кроме того, вы можете использовать консольную ультиту xdg-mime, добавить новую ассоциации можно например так:
И пропишет для всех ваших программ MIME типы автоматически. Но это не сработает если у вас например две программы для открытия pdf файлов. В этом случае лучше инструкцию вручную, как сказано в начале руководства.
Где хранятся ассоциации файлов?
Как Ubuntu или любые другие системы Linux хранят ассоциации файлов?
Есть ли некоторые /etc/asscociations файл или что-то?
Я знаю, что могу щелкнуть правой кнопкой мыши файл и изменить его с помощью «открыть с помощью», но мне просто интересно узнать, как он хранится внутри.
9 ответов
Файловый менеджер (по умолчанию 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 предоставляет информацию о системных значениях по умолчанию. Если вы не выберете иное, это те приложения, которые используются при открытии файла.
Как поменять ассоциации для множества файлов в Linux?
На данный момент у меня установлено 2 текстовых редактора, которыми я пользуюсь — Code и Sublime. Первый я использую как IDE — только для работы, потому что он относительно медленно запускается. А второй более быстрый, по этому используется именно как текстовый редактор, чтобы что-то по-быстрому открыть, поправить и закрыть. Собственно проблема в том, что сейчас для всех текстовых файлов назначен Code и я хочу поменять его на Sublime, но mime-типов очень много, через GUI менять замучаюсь, он к тому же глючный, постоянно мотает список вверх. Хотелось бы узнать, в каких файлах это можно поправить. Смотрел в ~/.local/share/applications , там никаких записей о Code нет.
2 ответа 2
например, с помощью программы xdg-mime (или любым другим подручным средством, способным записывать информацию в конф. файл ( ~/.local/share/applications/ )).
посмотреть текущую ассоциацию:
пара запросов (данные приведены из моей системы):
$ xdg-mime query default application/x-abiword libreoffice-writer.desktop $ xdg-mime query default application/rtf libreoffice-writer.desktop
чтобы назначить ассоциацию:
к примеру, на программу vim:
$ xdg-mime default vim.desktop application/x-abiword application/rtf
$ xdg-mime query default application/x-abiword vim.desktop $ xdg-mime query default application/rtf vim.desktop
а вот как это всё записалось в файл конфигурации:
$ cat ~/.local/share/applications/mimeapps.list [Default Applications] application/x-abiword=vim.desktop application/rtf=vim.desktop
посмотреть все текущие закешированные ассоциации можно в файле /usr/share/applications/mimeinfo.cache
how can I change file association globally? [duplicate]
gedit is set by default to open about any source file. I’ve gone through the file properties and changed default application to VIM for C and C++ files. I’d need to do this for any source file I open now, for python files, for text files, for ruby, any, since gedit is set to open all of them. How can I change this to open with VIM without going the hassle of setting «open with» one by one?
@DJCrashdummy this is not a duplicate if you take the time to read the discussion in both questions. Besides this being answered correctly by 3+ years already.
6 Answers 6
is actually the easiest, specifically going to a file’s properties, going to the «open with» tab, and then setting as default for that file type. Here’s the picture:
Again, just as I have commented already in o’rety’s answer: «this is not as easy when you want to set multiple file types at once or by mime type» and this question is about this. The chosen answer is still the right one.
ah my mistake, I was reading that as «setting multiple file’s types», not setting multiple default file type associations at once. my mistake-
This is actually the more natural answer (from the GUI and without manually writing text files or installing 3rd party stuff). It requires a one type at a time setup, though, since Ubuntu does not offer a Open With in a multiple selection -> Properties.
@ringø I know I’m 2 years behind, but since I’m still the accepted answer it seems, I need to say that your comment about this being the natural answer doesn’t resolve the OP question which specifically asks: «How can I change [all source files] to open with VIM without going the hassle of setting «open with» one by one».
This answer only works in Ubuntu 16.04 or prior; the comments have a link to a Xenial release of Ubuntu-Tweak. In newer versions of Ubuntu this will not work as Ubuntu-Tweak is no longer supported by the author.
Comments have suggested that Chris Marx answer below is the right way, but it does not resolve the answer of administrative management — for example, setting the type for many items.
Note: Ubuntu 16.04 is still LTS and Ubuntu 14.04 is not EOL
The EASIEST way for you to do this would be to install the program Ubuntu Tweak.
Once you have it downloaded you simply open it up, change to Admins tab and then under System choose File Type Manager. Once in here select the file category Text and using shift-click and/or control-click select all of the file types you want, then click Edit on the bottom right.
This will allow you to multi-set the mimetype opener for all of the files.