Как назначить приложения по умолчанию для открытия разных типов файлов в 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  в целом?
Ну если вдруг, вы сделаете ошибки, то этот файл можно просто напросто удалить и система потом его пересоздаст, а вот с глобальным файлом придется его восстанавливать.
Ну и если у вас несколько пользователей на одном компьютере работает, то просто скопируйте в его домашний каталог этот файл и всё.

  • https://www.blogger.com/profile/15090211474956541917 Александр Alexandr

    Спасибо, очень полезно.

  • https://www.blogger.com/profile/15090211474956541917 Александр Alexandr

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

  • https://www.blogger.com/profile/02028285154768727445 synth2008

    Отличнейшая статья!!! Респкет!

  • https://www.blogger.com/profile/08762921892818433547 Astronaut

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

  • https://www.blogger.com/profile/08785798286645197357 Олександр Козак

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