Я опишу как формируется главное меню в KDE, GNOME, Xfce для Linux/FreeBSD и заодно опишу что есть .desktop файл и и с чем его едят.
Файл с расширением .desktop — текстовым файлом где храниться информация о том что за приложение он должен запустить. Там же содержиться информация в каких группах меню он должен находится и локализованные название и описание: русский, английский и т.д.
.desktop файлы приложений хранятся в /usr/share/applications и многие пакеты несут в себе данный файл — во время установки он появляется там. Пакеты с приложениями собирают разные люди и у каждого из них свое представление о том, где и в каком из групп меню оно должно находиться, как называться и возможно своя иконка :).
Пример центр управления системой acc.desktop из AltLinux:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Categories=Settings;Alterator
Exec=acc
Icon=altlinux
Terminal=false
Name=System management center
Name[ru]=Центр управления системой
Name[tt_RU]=Система белән идарә итү үзәге
Пункт номер один: указание группы [Desktop Entry] из спецификации формата.
После указания группы [Desktop Entry], поля идут в формате Ключ=Значение. В ключе используются только символы латиницы и цифры. Значения могут быть как строковые (любые символы, а зарезервированные «;», «#», «\» нужно экранировать с помощью символа «\»), так и логические и цифровые. Подряд больше одной связки ключ+значение в одной строке обязательно должны быть отделены между собой «;». Пустые строки и начинающиеся с «#» игнорируются. Порядок расположения пар не регламентируется. Кодировки файла в основном UTF-8.
Ключ «Name» — название приложения, используемое для отображения в меню. Но будет выбрано самое оптимально — локализированое Name[ru], Name[ua] и т.д.
Ключ «Icon» — пиктограмма приложения. Указания названия пиктограммы берется из папки apps текущей темы иконок, находящейся по пути /usr/share/icons/[тема]. Так же можно указывать полный путь к пиктограмме в файловой системе.
Ключ «Categories» — группа меню, в которых будет данное приложение. Для acc.desktop две группы «Свойства» и «Alterator». Категории главного меню так же описываются .directory файлами в /usr/share/desktop-directories. Формат почти такой же как и у .desktop файлов, то есть принципы те же и в этом можно самому разобраться.
Ключ «Exec» — запуск приложения и значение = путь к выполняемому приложению.
| Code | Описание |
|---|---|
%f | Одно имя файла, даже если несколько файлов будут выбраны. Система не может использовать несколько аргументов и возможно требуется запуск нескольких копий файлов. Файлы не на локальном диске: HTTP или FTP, файлы будут скопированы на диск и%fбудет указывать на временый файл. Used for programs that do not understand the URL syntax. |
%F | A list of files. Use for apps that can open several local files at once. Each file is passed as a separate argument to the executable program. |
%u | A single URL. Local files may either be passed as file: URLs or as file path. |
%U | A list of URLs. Each URL is passed as a separate argument to the executable program. Local files may either be passed as file: URLs or as file path. |
%d | Исключено. |
%D | Исключено. |
%n | Исключено. |
%N | Исключено. |
%i | TheIconkey of the desktop entryexpanded as two arguments, first --iconand then the value of theIconkey. Should not expand to anyarguments if the Iconkey is emptyor missing. |
%c | The translated name of the application as listed in the appropriate Namekey in thedesktop entry. |
%k | The location of the desktop file as either a URI (if for example gotten from the vfolder system) or a local filename or empty if no location is known. |
%v | Исключено. |
%m | Исключено. |
Если нужно скрыть приложение из меню, то нужно прописать ключи: «NoDisplay = true» (убирает приложение из меню) или «Hidden = true» (скрывает приложение и с ним уже невозможно будет связать какой-либо Mime-тип файла в файловом менеджере).
Если же вы пользуетесь несколькими рабочими средами и хотите чтобы в меню каждой среды отображались только приложения специфичные для данной рабочей среды, то можно воспользоваться ключем OnlyShowIn (показывать только в) или NotShowIn (не показывать в), которые принимают значения KDE, GNOME или Xfce.
И последнее, если вы не хотите, чтобы при каждом обновлении приложения вам вновь пришлось править ваши .desktop файлы, скопируйте их в ~/.local/share/applications.
[:]