пятница, 21 июня 2013 г.

Ubuntu: как добавить приложение в список "Открыть с помощью"

В Ubuntu, Fedora и многих других дистрибутивах, на базе Gnome, используется файловый менеджер Nautilus. Начиная с какой-то версии, из него убрали возможность добавлять любые приложения в меню файлов "Открыть с помощью". Теперь оно генерируется автоматически на базе .desktop-файлов. Это текстовые файлы, которые содержат определённый набор информации о приложении - на основе их генерируется и главное меню, и меню Unity и многое другое. Что же нужно, чтобы добавить туда любую программу?

Коротко - создаём desktop-файл для необходимого приложения, проверяем чтобы в параметре Exec обязательно была подстановка переменных %F или %U, добавляем в параметр MimeType нужный тип документа (узнать можно через xdg-mime или mimetype). Подробнее в деталях - далее по тексту. Пример desktop-файла там же.

UPDATE: В комментариях подсказали ещё один вариант. Всё то же самое, что описано далее, автоматически делает графическая утилита Assogiate.

Для пример, разберу простую ситуацию. Я хочу, чтобы текстовые файлы открывались в консольном редакторе nano.

Как мы видим, его тут нет, как и нет кнопки "Добавить свою программу" или в этом роде (кстати, кнопка "Добавить" на скриншоте означает совсем не это - она просто добавляет приложение из раздела "Другие приложения" в раздел "Рекомендуемые приложения" данного списка).

Нам нужно создать desktop-файл нового, интересующего нас приложения либо отредактировать уже существуий desktop-файл приложения. Он может находиться в следующих директориях:
  1. /home/user/.local/share/applications/ - файлы конкретного пользователя user.
  2. /usr/share/applications/ - общесистемные файлы, применяются ко всем пользователям. Сюда складывает desktop-файлы пакетный менеджер дистрибутива.
  3. /usr/local/share/applications/ - общесистемные файлы. Сюда желательно складывать desktop-файлы программ, установленных мимо пакетного менеджера.


Сначала нужно узнать, к какому mimetype принадлежит наш файл, который мы хотим открыть в другой программе. Mimetype - это, можно сказать, тип файла, именно по нему ищется, в какой программе откроется файл. Его можно посмотреть, зайдя в Nautilus-е в свойства файла, либо с помощью консольных утилит xdg-mime или mimtype:
xdg-mime query filetype AUTORUN.INF
text/plain

Запоминаем то, что показала нам утилита xdg-mime. Затем решаем, где мы будем создавать desktop-файл (список каталогов выше). В моём случае - для одного моего пользователя (учтите, что доступ к /usr возможен только из-под root-а, либо через sudo). Создаю структуру каталогов:
mkdir -p ~/.local/share/applications/
Далее либо копирую уже существующий desktop-файл другого приложения и затем правлю его под свои нужды, либо создаю минимальный desktop-файл (это обычный тесктовый файл с расширением *.desktop):
nano ~/.local/share/applications/nano.desktop
В этом файле нужно убрать всё лишнее, оставив только необходимое. Затем изменить или, если мы создали новый файл, добавить поля:
  • Name - имя приложения
  • Comment - комментарий
  • Обязательно: Exec - путь до исполняемого файла программы. Обязательно нужно указать подстановку имени файла с помощью переменной %F или %U - иначе эта программа не будет отображаться
  • по желанию: Icon - название иконки
  • Categories - категории, используется во многих DE чтобы сгенерировать главное меню
  • Обязательно: MimeType - тип файла, сюда вписываем то, что запомнили на предыдущем шаге (text/plain в моём случае). Можно перечислять несколько значений через символ ;
В моём случае файл получился такой (можете взять его за основу и уже исправлять):
[Desktop Entry]
Name=nano
Comment=Nano text editor
Exec=gnome-terminal -e "nano %U"
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
Всё. Идём в Nautilus-е к нужному файлу, правой кнопкой на нём, свойства. Переходим на вкладку "Открыть с помощью". В списке в разделе "Другие приложения" мы видим программу nano. Выбираем её, жмём "Добавить" либо "Установить по умолчанию":



1 комментарий :

  1. Можно с помощью графической утилиты assogiate добавить новые mimetype, отредактировать уже существующие:

    sudo apt-get install assogiate

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