Редактируем LXDE menu в ручную.

Модератор: adventurer

Аватара пользователя

Автор темы
lincooln
Сообщения: 44
Зарегистрирован: 24 апр 2011, 07:36
Откуда: Краснодарский край

Редактируем LXDE menu в ручную.

#1

Сообщение lincooln » 20 фев 2012, 07:37

И так. Если мы хотим добавить Своё приложение или под-меню в главное меню LXDE надо:

1. создать (или проверить наличие) файла (того которое будем добавлять в меню) с расширением desktop и находящегося в каталоге /usr/share/applications/ (ну или аналогично в домашней директории нужного нам пользователя /home/user/.local/share/applications/, если меню будем менять только для одного пользователя).
Для примера я решил добавить MC. Соответственно переходим в /usr/share/applications/ и создаём файл mc.desktop со следующим содержимым:
[Desktop Entry]
# Кодировка
Encoding=UTF-8
#Указывает что приложение (может быть и каталог и ссылка на URL)
Type=Application
# Имя (То что будет отображаться)
Name=MC
#Коментарий
Comment=mc
#Имя иконки !Иконка с данным именем должна быть в вашей системе
Icon=mc
#Так как приложение консольное то ставим true иначе можно false
Terminal=true
#Собственно команда запуска. !Можно указывать полный путь к приложению.
Exec=mc
#Дословно: Скрывать в меню? - Нет
NoDisplay=false
#Категории меню в которых отображать наше приложение, перечисляем через запятую. !Точка с запятой в конце обязательна.
Categories=mc;
2. Открываем фаил /etc/xdg/menus/lxde-applications.menu - !От root (по сути это обычный xml файл, к тому же по FreeDesktop спецификации), но для пояснения распишу что здесь и для чего:

В самом начале Есть такие строчки:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/me ... 0/menu.dtd">
<Menu>
<Name>Applications</Name>
<Directory>lxde-menu-applications.directory</Directory>


Сразу после них можно добавлять своё приложение, для этого вставляем такую форму:

<Include>
<Filename>mc.desktop</Filename>
</Include>

И сохраняем изменения. Готово.

3. Если изменения не произошли то можно перезапустить сессию либо в консоли выполнить:

Код: Выделить всё

$ killall lxpanel
- Это убьёт панель

Код: Выделить всё

$ find ~/.cache/menus -name '*' -type f -print0 | xargs -0 rm
- Это очистит кэш меню

Код: Выделить всё

$ lxpanel -p LXDE &
- Запускаем панель снова

4. Если хотим добавит в меню свои подменю то дополнительно прийдётся создать свою категорию этого подменю. Для этого переходим в /usr/share/desktop-directories/ (или аналогично в домашней директории нужного нам пользователя /home/user/.local/share/desktop-directories/, если меню будем менять только для одного пользователя). Опять для примера возьмём MC:
Cоздаём файл mc.directory следующего содержания:
[Desktop Entry]
#Имя директории
Name=mc
#Имя директории на Русском
Name[ru]=mc
#Коментарий
Comment=mc-comment
#Коментарий на русском
Comment[ru]=mc-coment-ru
#Иконка Директории
Icon=applications-other
#Указываем что данный файл описывает директорию
Type=Directory
Затем открываем все файлы с расширением desktop которые хотим видеть во вновь созданной директории и в поле Categories= указываем значение Name= из только-что созданного .directory

Теперь остаётся только включить эту директорию в наше меню. Для этого открываем /etc/xdg/menus/lxde-applications.menu

и находим блоки типа

Код: Выделить всё

<!-- Games -->
	<Menu>
		<Name>Games</Name>
		<Directory>lxde-game.directory</Directory>
		<Include>
			<And>
				<Category>Game</Category>
			</And>
		</Include>
	</Menu> <!-- End Games -->
Так вот, всё что находится внутри между <!-- Games --> и <!-- End Games --> описывает подменю. В данном случае это игры.
Самый простой способ добавить своё подменю это скопировать всё что находится внутри между <!-- Games --> и <!-- End Games --> изменить значения полей на свои
Где <!-- Games --> и <!-- End Games --> по сути это комментарии помогающее легче ориентироваться по тексту, заменим на <!-- mysubmenu --> и <!-- End mysubmenu -->
Всё что между <Name>...</Name> означает имя и может быть любым
<Directory>lxde-mydirectory.directory</Directory> - добавляет директорию .
Не обязательно, но возможно, добавить
<And>
<Category>mycategory</Category>
</And>
Указывает что сюда так же будут добавлены приложения с категорией mycategory.

Вот собственно и Всё.

Понимаю что несколько сумбурно, но как умею, будут вопросы задавайте.

П.С. Ещё хочу немного разъяснить терминологию: Для Приложения есть такое понятие как категория и одноимённый ключ в файле desktop с именем Categories в котором мы можем указать к какой или каким категориям принадлежит данный фаил. Категории аналогичны категориям в центре приложений.
Для меню есть такое понятие как директория это означает по сути один пункт меню (по русски проще подменю) который содержит либо другие директории либо приложения.
Тоесть, если файл с расширением .desktop описует свойства и то как будет выглядеть пункт меню самого приложения. А файл с расширением .directory описывает свойства и как должен выглядеть пункт меню для входящих в него приложений одной категории.