Как назначить приложения по умолчанию для открытия разных типов файлов в 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 Олександр Козак

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