Xdg-menu (Русский)
xdg-menu — это инструмент, генерирующий меню на основе информации из XDG Desktop Menu для следующих оконных менеджеров:
KDE, GNOME, Xfce и Enlightenment уже имеют совместимость с XDG.
Установка
Установите пакет archlinux-xdg-menu.
Иерархия меню
- Applications (Приложения)
- Accessibility (Специальные возможности)
- Accessories (Стандартные)
- Development (Разработчка)
- Education (Образование)
- Games (Игры)
- Graphics (Графика)
- Internet (Интернет)
- Multimedia (Мультимедиа)
- Office (Офис)
- Other (Прочее)
- Science (Наука)
- System (Система)
Настройка
Xdg_menu опирается на сведения для генерации меню из трёх источников: root menu (главное меню) или другими словами, шаблон меню XML, как правило передающихся в командной строке, информация и ряд конфигурационных файлов кэшируются, после последнего запуска.
- Вы можете найти несколько шаблонов меню в
/etc/xdg/menus
. - После изменения кода в xdg_menu, чтобы изменить схему, убедитесь, что вы удалили всё в
~/.xdg_menu_cache
, иначе вы потратите много времени, пытаясь выяснить, почему ваши изменения в скрипатх Perl не принимаются. - Вы можете найти индивидуальные конфигурации приложений в
/usr/share/applications
.
Другие каталоги файлов конфигурации можно найти в каталоге /usr/share
. В большинстве случаев вам не нужно трогать их. Если вы хотите, изменить то, как ваше меню располагается, вы можете изменить шаблон меню. Основные изменения требуют тонкой настройки скрипта perl xdg_menu. Если вы обнаружили, что приложения не отображаются или что они вызывают что-то не то, то вам нужно будет посмотреть в файл .desktop в /usr/share/applications
. Проверьте этот файл стандартов.
Добавление записей рабочего стола из других каталогов
По умолчанию, меню XDG будет заполняться приложениями которые устанавливают свои desktop entries в /usr/share/applications
. Чтобы добавить в меню приложение, которое устанавливает свои desktop entry в пользовательский каталог, такой как ~/.local/share/applications
, отредактируйте файл /etc/xdg/menus/arch-applications.menu
и добавьте тэг <AppDir>
для соответствующего каталога, смотрите ниже:
/etc/xdg/menus/arch-applications.menu
<Menu> <Name>Applications</Name> <Directory>Arch-Applications.directory</Directory> <DefaultAppDirs/> <AppDir>/home/Ваш логин/.local/share/applications</AppDir> <DefaultDirectoryDirs/> <DefaultMergeDirs/> ...
Использование
xdg_menu [--format <format>] [--desktop <desktop>] [--charset <charset>] [--language <language>] [--root-menu <root-menu>] [--die-on-error] [--fullmenu] [--help] format - output format possible formats: twm, WindowMaker, fvwm2, icewm, ion3 blackbox, fluxbox, openbox, xfce4, openbox3, openbox3-pipe, awesome readable default: WindowMaker fullmenu - output a full menu and not only a submenu desktop - desktop name for NotShowIn and OnlyShowIn default: the same as format charset - output charset default: <locale> language - output language default: <locale> root-menu - location of root menu file default: /opt/gnome/etc/xdg/menus/applications.menu die-on-error - abort execution on any error, default: try to continue verbose - print debugging information help - print this text
update-menus обновляет меню оконных менеджеров на основе данных XDG и может быть настроен на автоматическое обновление.
Это скрипт-оболочка xdg_menu. Его можно настроить с помощью файла /etc/update-menus.conf
.
Для использования установите пакет archlinux-xdg-menu (xdg_menu).
В файле /etc/update-menus.conf
выберите из списка оконные менеджеры, для которых нужно сгенерировать меню. Строки с символом # в начале считаются комментариями и игнорируются.
Все сгенерированные меню находятся в каталоге /var/cache/xdg-menu/
. В разделе #Примеры показано, как настроить использование меню в оконных менеджерах.
Примеры
Awesome
$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu > ~/.config/awesome/archmenu.lua
Затем измените rc.lua
как показано ниже.
- Добавьте требуемый оператор для вашего нового файла
menu.lua
. - Добавьте запись в свой объект
awful.menu
для нового меню, которое вызываетxdg-menu
.
... xdg_menu = require("archmenu") ... ... mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, { "Applications", xdgmenu }, { "open terminal", terminal } } }) ...
IceWM
$ xdg_menu --format icewm --fullmenu --root-menu /etc/xdg/menus/arch-applications.menu >> ~/.icewm/programs
- Раскоментируйте icewm в
/etc/update-menus.conf
. - Выполните
update-menus
от имени суперпользователя (root). - Сделайте символьную ссылку на
/var/cache/xdg-menu/icewm/programs
в~/.icewm/programs
.
FluxBox
$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu > ~/.fluxbox/my-menu
Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
[include] (my-menu)
- Расскоментируйте fluxbox в
/etc/update-menus.conf
. - Выполните
update-menus
от имени суперпользователя (root). - Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
[include] (/var/cache/xdg-menu/fluxbox/boxrc)
OpenBox
Сгенерируйте меню
$ xdg_menu --format openbox3 --root-menu /etc/xdg/menus/arch-applications.menu > xdg-menu.xml
и вручную добавьте его в свой menu.xml
. Например, положите xdg-menu.xml
в menu.xml
и добавьте:
<menu id="Applications" />
в root-menu
.
Использование xdg_open как pipe menu, дает дополнительное преимущество получить меню, которое автоматически обновляется при установке новых приложений.
Добавьте следующее, где-то, внутри вашего menu.xml между вашими тэгами root menu
<menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />
Очень простой пример:
<?xml version="1.0" encoding="UTF-8"?> <openbox_menu xmlns="http://openbox.org/3.4/menu"> <menu id="root-menu" label="Openbox 3"> <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" /> <separator /> <item label="Log Out"> <action name="Exit"> <prompt>yes</prompt> </action> </item> </menu> </openbox_menu>
- Расcкоментируйте openbox в
/etc/update-menus.conf
. - Выполните
update-menus
от имени суперпользователя (root). - измените ваш файл
menu.xml
, чтобы включить сгенерированное меню.
Например, добавьте следующее в root-menu:
<menu id="xdg-menu" label="XDG Menu" execute="cat /var/cache/xdg-menu/openbox/menu.xml"/>
Twm
Используйте
$ xdg_menu --format twm --root-menu /etc/xdg/menus/arch-applications.menu >my-twm-menu
И добавьте его в twmrc вручную. В случае с производным twm препроцессингом m4, таким как vtwm или ctwm, он может быть включен путём добавления
sinclude(`/PATH/TO/my-twm-menu')
в *twmrc
.
- Расcкоментируйте twm в
/etc/update-menus.conf
. - Добавьте в файл
/etc/X11/twm/system.twmrc
меню приложений (добавьте это вdefops menu
)::
"apps" f.menu "Applications"
- Выполните
update-menus
от имени суперпользователя (root). - Выполните
twm -f /var/cache/xdg-menu/twm/twmrc
.
/etc/X11/twm/system.twmrc
.WindowMaker
Используйте
$ xdg_menu --format WindowMaker --root-menu /etc/xdg/menus/arch-applications.menu >my-wm-menu
и добавьте
#include "my-wm-menu"
в ваш файл меню WindowMaker.
Вы можете также использовать WPrefs "Application Menu Definitions", и добавить команду XDG в качестве параметра в объект "Generated Submenu".
- Расcкоментируйте WindowMaker в
/etc/update-menus.conf
. - Выполните
update-menus
от имени суперпользователя (root). - Добавьте
#include "/var/cache/xdg-menu/WindowMaker/wmrc"
в ваш файл меню.
Fvwm2
Сгенерируйте меню
$ xdg_menu --format fvwm2 --root-menu /etc/xdg/menus/arch-applications.menu >fvwm2-menu
И добавьте его в главное меню:
read fvwm2-menu AddToMenu MenuFvwmRoot "Root Menu" Title + "&0. XDG Menu" Popup xdg_menu
- Расcкоментируйте fvwm2 в
/etc/update-menus.conf
. - Выполните
update-menus
от имени суперпользователя (root). - измените ваш файл
.fvwm2rc
, чтобы включить сгенерированное меню. Например:
AddToMenu MenuFvwmRoot "Root Menu" Title + "&0. XDG Menu" Popup xdg_menu
read /var/cache/xdg-menu/fvwm2/fvwm2rc
BlackBox
$ xdg_menu --format blackbox --root-menu /etc/xdg/menus/arch-applications.menu >my-menu
Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
[include] (my-menu)
- Расcкоментируйте blackbox в
/etc/update-menus.conf
. - Выполните
update-menus
от имени суперпользователя (root). - Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
[include] (/var/cache/xdg-menu/blackbox/boxrc)