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

В данной статье речь пойдет о том, как назначить "Рекомендуемые приложения" и "приложения по умолчанию" для разных типов файлов в Ubuntu.


Предисловие и суть проблемы.

В Ubuntu есть инструмент для назначения приложений по умолчанию, заходим "Все параметры - Сведения о системе - Приложения по умолчанию":


Но этот инструмент удобен разве что для назначения только веб браузера, ну и приложений для открытия музыкальных и видео файлов.

Но пользователи работают с гораздо большим количеством типов файлов.
К примеру, у нас есть файлы docx и odt:


И, допустим, мы хотим docx файл открывать с помощью WPS офиса, а odt файл открывать с помощью Libreoffice.

Или еще пример, у нас есть изображение, которое нормально открывается по умолчанию в редакторе по умолчанию. Но зачастую изображение нужно изменить, в этом случае открываем контекстное меню правой кнопкой мыши и выбираем "Открыть в программе" и там уже выбираем нужный нам редактор, но так как у нас в системе куча приложений работающих с изображением, то может получиться что там в списке целый зоопарк приложений:


И это очень неудобно.

Есть еще замечательный инструмент Ubuntu Tweak:
Установка Ubuntu Tweak в Ubuntu.
В нём можно установить приложения по умолчанию для разных типов файлов - "Администрирование - Типы файлов":


Ну если с аудио файлами еще всё более или менее, то как быть с типом текстовых файлов от "нашего любимого" Microsoft - docx:


Когда видишь такой зоопарк, то как-то пропадает желание каждый тип из списка просматривать и определять, какой же из них за docx отвечает. Да и рекомендованные приложения здесь не отредактировать.

Примечание.
Ubuntu Tweak сбрасывать со счетов тоже не нужно, он в каких то моментах может быть полезен для назначения файлов по умолчанию. Тоже самое и "Приложения по умолчанию" в "Сведениях о системе" - удобно настроить браузер по умолчанию или Почтовый клиент, приложение для всех аудио и видео файлов.

Приступим к тонкой настройке.

Назначение приложений по умолчанию и рекомендованных приложений для разных типов файлов в Ubuntu.

В Ubuntu уже есть нормальный инструмент для назначения приложений по умолчанию и рекомендованных приложений.
Выбираем файл, для типа которого нужно произвести ассоциацию приложений и вызываем контекстное меню правой кнопкой мыши и выбираем "Свойства":


На вкладке "Основные" видим тип файла - mimetype (о нём пойдет речь чуть ниже).

Переходим на вкладку "Открыть с помощью":


Здесь видим "Приложение по умолчанию" и "Рекомендованные приложения" для данного типа файла, которые можно легко изменить.

Чтобы было понятнее:


Разберем интерфейс.
Кнопка "Установить по умолчанию" - думаю понятно зачем :).
Кнопка "Добавить" - если выбрать приложение из списка "Другие приложения" и нажать эту кнопку, то приложение будет добавлено в "Рекомендованные".
Кнопка "Сброс" - так как мы устанавливаем ассоциации файлов для нашего конкретного пользователя, то вызов данной кнопки вернет значения файловых ассоциаций приложения в самой системе.
Чтобы удалить приложение из "Рекомендованных", нужно вызвать контекстное меню(правым кликом мыши) на приложении из списка и выбрать "Забыть ассоциацию":


Вот таким образом легко настроили, чтобы docx формат открывался с помощью WPS Office, а odt с помощью Libreoffce.

А также удалили для изображения типа PNG из списка рекомендованных приложений лишние, оставив только редакторы:


Разбор полетов и терминал.

Просто так закончить статью было бы плохо, остаётся недосказанность.

  • А где же все эти файловые ассоциации хранятся, в каком конфигурационном файле?
  • А как вообще приложения попадают в список из которого можно выбрать приложение по умолчанию?
  • А что делать, если у меня есть ярлык приложения в системе, а по умолчанию для моего типа файла я его выбрать не могу?

Файловые ассоциации приложений для текущего пользователя хранятся в:
~/.local/share/applications/mimeapps.list
Если открыть его с помощью текстового редактора, к примеру Gedit:
gedit ~/.local/share/applications/mimeapps.list
Мы увидим следующее содержимое:


Там есть три вида "заголовка - директивы":

  • [Added Associations] - после неё идет список рекомендованных приложений.
  • [Default Applications] - после неё идет список приложений по умолчанию.
  • [Removed Associations] - после неё идет список удаленных приложений из рекомендованных.

Сама же файловая ассоциация приложения представляет собой
mimetype=launch.desktop;
То есть, тип файла = имя ярлыка приложения из каталогов ярлыков в системе.
Каталоги ярлыков в системе находятся в следующих каталогах:

  • /usr/share/applications/ 
  • /usr/local/share/applications/ 
  • ~/.local/share/applications

Когда мы меняем файловые ассоциации приложений через "Свойства - Открыть с помощью", то этот файл автоматически обновляется.
Но его можно и в ручную отредактировать.

По поводу ярлыков очень важное замечание.
Если в ярлыке в строке запуска EXEC, команда без ключа стоит, то данного приложения в списке для выбора по умолчанию или добавления в рекомендуемые.

Рассмотрим на примере ярлыка приложения Deadbeef:


В команде Exec - есть ключ %f.
И у этого ярлыка в параметре MimeType прописаны типы всех музыкальных файлов, следовательно данное приложение будет в рекомендованных:


Но если мы удалим данный ключ, то приложение сразу же пропадет из списка рекомендованных и его не будет в списке "Другие приложения":


Это нужно учитывать, когда создаете собственный ярлык для приложения.
Нужно указывать ключ для Exec команды, чтобы можно было данное приложение указывать в качестве приложения по умолчанию или рекомендованного.

Типы ключей для Exec описаны здесь:
http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s06.html

То есть 4 типа:
%f - для открытия одного локального файла;
%F - для открытия списка локальных файлов;
%u - для открытия локального файла или по url ссылке.
%U - для открытия локальных файлов или файлов по url ссылкам.

К примеру у Gimp в Exec команде %U ключ.

Переходим теперь к определению MimeType.
Что же это такое MimeType и почему используется оно, а не расширение файла для определения типа файлов?
Это стандарт Mime - о нём можно почитать на википедии:
Стандарт MIME
Может кого-то удивлю, но в Linux нет расширений файлов.
В Windows у нас, допустим, есть файл music.mp3. Имя файла - music, а mp3 - расширение.
В Linux же, у на mucis.mp3 это имя файла.

К примеру, у нас есть музыкальный файл:


Мы можем спокойно удалить расширение файла и оно будет нормально определяться и открываться:


На самом деле не всё так "радужно", некоторые приложения привязываются к "расширениям файлов".
Да и если переименовать его в .txt, то Ubuntu попытается его открыть как текстовый файл. Поэтому привязка к "расширению в имени файла" есть:


Но если убрать "расширение", и открыть свойства файла, то там увидим MimeType:


Тоже самое можно сделать с помощью консольной команды:
mimetype имя_файла

Ну и чтобы закрепить теперь то,  о чём я говорил.
До этого я с помощью "Свойство - Открыть с помощью", я удалил ассоциации для PNG файлов:


Но также это нужно убрать и для форматов jpeg, gif, bmp.
Делать аналогичную операцию для этих типов утомительно, поэтому проще просто скопировать строчку для PNG и вписать Mime Type для jpeg, gif, bmp:


В итоге получаем:


Таким образом можно и самим править это файл.

Почему лучше именно локальный файл пользователя менять, а не системный для Ubuntu  в целом?
Ну если вдруг, вы сделаете ошибки, то этот файл можно просто напросто удалить и система потом его пересоздаст, а вот с глобальным файлом придется его восстанавливать.
Ну и если у вас несколько пользователей на одном компьютере работает, то просто скопируйте в его домашний каталог этот файл и всё.

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

5 коммент. :

  1. Не подскажете, что у вас за тема иконок и gtk?

    ОтветитьУдалить
  2. Отличнейшая статья!!! Респкет!

    ОтветитьУдалить
  3. Давно ждал новую статью. Всегда приятно читать Ваш материал.

    ОтветитьУдалить
  4. Наконец нашел как ассоциировать файлы с программой, которой нет в списке. Спасибо.

    ОтветитьУдалить