Добавление новой группы приложений в linux

Как я могу на Java или другом языке программирования добавить новую группу программ в меню приложений как в KDE, так и в Gnome?

Я тестирую Ubuntu и Kubuntu 8. Помещение простого файла .menu в ~ / .config / menus / applications-merged работало в Kubuntu, но та же процедура ничего не дает в Ubuntu.

Содержание моего файла следующее:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Menu>
  <Name>My Program Group</Name>
  <Include>
   <Filename>shortcut.desktop</Filename>
  </Include>
</Menu>
</Menu>

Обратите внимание, что файл .desktop правильно размещен в ~ / .local / share / applications.

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

Вы пытаетесь сделать это в сценарии?

Kev 06.10.2008 16:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
3 829
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

В Gnome используйте System -> Settings -> Menu, затем просто выберите New Menu или New Entry.

Ответ принят как подходящий

Может быть, xdg-desktop-menu это делает? См. man xdg-desktop-menu или http://manpages.ubuntu.com/manpages/hardy/en/man1/xdg-desktop-menu.html.

Вместо того, чтобы копировать эти файлы самому, лучше использовать для работы xdg-desktop-menu.

Thiago Chaves 10.10.2008 00:06

Спасибо, Оливер. Я использовал xdg-desktop-menu, а затем проанализировал его вывод. Правильный файл меню должен явно называть внешнее меню (Приложения) следующим образом:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" 
    "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
    <Name>Applications</Name>
<Menu>
    <Name>My Program Group</Name>
    <Include>
        <Filename>shortcut.desktop</Filename>
    </Include>
</Menu>
</Menu>

Это прекрасно работало в Kubuntu, Ubuntu и Fedora Core 9. Однако не удалось заставить его работать в openSUSE.

Я рекомендую вам изучить стандарты freedesktop.org, которые охватывают это. Актуальный список доступен здесь:

http://www.freedesktop.org/wiki/Specifications/menu-spec

Последний на данный момент 1.0:

http://standards.freedesktop.org/menu-spec/1.0/

Стандартам FreeDesktop.org следуют Gnome, KDE и XFCE, поэтому он должен работать в любом дистрибутиве.

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

Thiago Chaves 07.10.2008 23:25

Не уверен, что именно вы имели в виду, говоря «в openSUSE файл .directory является обязательным, иначе программная группа не появится»; в общем, я полагаю, вам нужно дважды вызвать xdg-desktop-menu (один раз для группы программ и один раз для самой программы), и поэтому вам также нужно предоставить два разных файла .directory. Если группа программ пуста, имеет смысл скрыть ее на рабочем столе.

(Но, может быть, я вас совершенно неправильно понял :-) и сам никогда не использовал xdg-desktop-menu).

Я не хотел использовать xdg-desktop-menu. Я сам пытался создать файлы в правильных папках, и в openSUSE у вас должен быть файл каталога, но в Ubuntu и Kubuntu он не пропущен. Но теперь я думаю, что использование xdg-desktop-menu напрямую - лучшее решение.

Thiago Chaves 10.10.2008 00:05

Другие вопросы по теме