Xdg-menu (Русский)
Меню XDG создаёт меню для оконных менеджеров используя Стандарт Меню Free Desktop. Вы можете установить archlinux-xdg-menu.
Поддерживаются следующие оконные менеджеры:
- twm
- ion3
- WindowMaker
- fvwm2
- icewm
- blackbox
- fluxbox
- openbox
- awesome
Также с XDG совместимы: KDE, Gnome, Xfce, Enlightenment.
Contents
Иерархия меню
- 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
Обновление меню
Обновление меню XDG в Оконных Менеджерах можно сделать автоматически, при помощи настроек update-menus.
Скрипт-оболочка 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 для нового меню, которое вызывает xdgmenu
...
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
Ion3
$ xdg_menu --format ion3 --root-menu /etc/xdg/menus/arch-applications.menu >~/.ion3/default-session--0/_xdg-menu.lua
После этого измените cfg_menus.lua включите файл _xdg-menu.lua и добавьте меню в mainmenu. Например:
...
dopath("_xdg-menu")
-- Main menu
defmenu("mainmenu", {
submenu("XDG Menu", "<NAME-OF-FIRST-MENU-IN-_xdg-menu.lua-FILE>"),
submenu("Programs", "appmenu"),
menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"),
menuentry("Help", "mod_query.query_man(_)"),
menuentry("About Ion", "mod_query.show_about_ion(_)"),
submenu("Styles", "stylemenu"),
submenu("Session", "sessionmenu"),
})
...
- Расскомментируйте ion3 в /etc/update-menus.conf
- Выполните update-menus от имени суперпользователя (root)
- Измените ваш cfg_menus.lua включенный файл xdg-menu.lua и добавьте меню в mainmenu.
Например:
...
dopath("/var/cache/xdg-menu/ion3/xdg-menu.lua")
-- Main menu
defmenu("mainmenu", {
submenu("XDG Menu", "<NAME-OF-FIRST-MENU-IN-xdg-menu.lua-FILE>"),
submenu("Programs", "appmenu"),
menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"),
menuentry("Help", "mod_query.query_man(_)"),
menuentry("About Ion", "mod_query.show_about_ion(_)"),
submenu("Styles", "stylemenu"),
submenu("Session", "sessionmenu"),
})
...
FluxBox
$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu >~/.fluxbox/my-menu
Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
[include] (my-menu)
- Расскоментируйте fluxbox in /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 in /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 in /etc/update-menus.conf
- Добавьте в файл меню приложений /etc/X11/twm/system.twmrc (добавьте следующую строку:
"apps" f.menu "Applications"
в defops menu)
- Выполните 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 in /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 in /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 in /etc/update-menus.conf
- Выполните update-menus от имени суперпользователя (root)
- Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
[include] (/var/cache/xdg-menu/blackbox/boxrc)