arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
499 lines (330 loc) • 18.3 kB
Markdown
**Состояние перевода:** На этой странице представлен перевод статьи [Xdg-menu](/index.php/Xdg-menu "Xdg-menu"). Дата последней синхронизации: 27 марта 2016\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Xdg-menu&diff=0&oldid=428040).
**Меню XDG** создаёт меню для оконных менеджеров используя [Стандарт Меню Free Desktop](http://standards.freedesktop.org/menu-spec/menu-spec-latest.html). Вы можете [установить](/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D0%B5 "Установите") [archlinux-xdg-menu](https://www.archlinux.org/packages/?name=archlinux-xdg-menu) из [официальных репозиториев](/index.php/%D0%9E%D1%84%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8 "Официальные репозитории").
Поддерживаются следующие оконные менеджеры:
* twm
* ion3
* WindowMaker
* fvwm2
* icewm
* blackbox
* fluxbox
* openbox
* awesome
Также с XDG совместимы: KDE, Gnome, Xfce, Enlightenment.
## Contents
* [1 Иерархия меню](#.D0.98.D0.B5.D1.80.D0.B0.D1.80.D1.85.D0.B8.D1.8F_.D0.BC.D0.B5.D0.BD.D1.8E)
* [2 Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
* [2.1 Добавление записей рабочего стола из других каталогов](#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B5.D0.B9_.D1.80.D0.B0.D0.B1.D0.BE.D1.87.D0.B5.D0.B3.D0.BE_.D1.81.D1.82.D0.BE.D0.BB.D0.B0_.D0.B8.D0.B7_.D0.B4.D1.80.D1.83.D0.B3.D0.B8.D1.85_.D0.BA.D0.B0.D1.82.D0.B0.D0.BB.D0.BE.D0.B3.D0.BE.D0.B2)
* [3 Использование](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
* [3.1 xdg_menu](#xdg_menu)
* [3.2 Обновление меню](#.D0.9E.D0.B1.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BC.D0.B5.D0.BD.D1.8E)
* [4 Примеры](#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B)
* [4.1 Awesome](#Awesome)
* [4.1.1 С xdg_menu](#.D0.A1_xdg_menu)
* [4.2 IceWM](#IceWM)
* [4.2.1 С xdg_menu](#.D0.A1_xdg_menu_2)
* [4.2.2 С update-menus](#.D0.A1_update-menus)
* [4.3 Ion3](#Ion3)
* [4.3.1 С xdg_menu](#.D0.A1_xdg_menu_3)
* [4.3.2 С update-menus](#.D0.A1_update-menus_2)
* [4.4 FluxBox](#FluxBox)
* [4.4.1 С xdg_menu](#.D0.A1_xdg_menu_4)
* [4.4.2 С update-menus](#.D0.A1_update-menus_3)
* [4.5 OpenBox](#OpenBox)
* [4.5.1 С xdg_menu](#.D0.A1_xdg_menu_5)
* [4.5.2 Как pipe menu](#.D0.9A.D0.B0.D0.BA_pipe_menu)
* [4.5.3 С update-menus](#.D0.A1_update-menus_4)
* [4.6 Twm](#Twm)
* [4.6.1 С xdg_menu](#.D0.A1_xdg_menu_6)
* [4.6.2 С update-menus](#.D0.A1_update-menus_5)
* [4.7 WindowMaker](#WindowMaker)
* [4.7.1 С xdg_menu](#.D0.A1_xdg_menu_7)
* [4.7.2 С update-menus](#.D0.A1_update-menus_6)
* [4.8 Fvwm2](#Fvwm2)
* [4.8.1 С xdg_menu](#.D0.A1_xdg_menu_8)
* [4.8.2 С update-menus](#.D0.A1_update-menus_7)
* [4.9 BlackBox](#BlackBox)
* [4.9.1 С xdg_menu](#.D0.A1_xdg_menu_9)
* [4.9.2 С update-menus](#.D0.A1_update-menus_8)
* [5 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5)
### Иерархия меню
* 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`. Проверьте этот [файл стандартов](http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html).
### Добавление записей рабочего стола из других каталогов
Изначально, меню 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
```
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](https://www.archlinux.org/packages/?name=archlinux-xdg-menu) (xdg_menu)
`/etc/update-menus.conf` - выберите из списка Оконные Менеджеры, для которых меню должно быть сгенерировано. Комментарии с # разрешены.
Все сгенерированные меню, находятся в `/var/cache/xdg-menu/`. Для получения дополнительной информации смотрите разделы этой страницы, в которых говорится о специфичных примерах для Оконных Менеджеров.
## Примеры
### Awesome
#### С xdg_menu
```
$ 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
```
$ xdg_menu --format icewm --fullmenu --root-menu /etc/xdg/menus/arch-applications.menu >>~/.icewm/programs
```
#### С update-menus
* Раскоментируйте icewm в /etc/update-menus.conf
* Выполните update-menus от суперпользователя (root)
* Сделайте символьную ссылку в /var/cache/xdg-menu/icewm/programs на ~/.icewm/programs
### Ion3
#### С xdg_menu
```
$ 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"),
})
...
```
#### С update-menus
* Расскомментируйте 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
```
$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu >~/.fluxbox/my-menu
```
Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
```
[include] (my-menu)
```
#### С update-menus
* Расскоментируйте fluxbox in /etc/update-menus.conf
* Выполните update-menus от имени суперпользователя (root)
* измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
```
[include] (/var/cache/xdg-menu/fluxbox/boxrc)
```
### OpenBox
#### С xdg_menu
Сгенерируйте меню
```
$ 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.
#### Как pipe 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>
```
#### С update-menus
* Рас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
Используйте
```
$ 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.
#### С update-menus
* Рас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
Используйте
```
$ 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".
#### С update-menus
* Расcкоментируйте WindowMaker in /etc/update-menus.conf
* Выполните update-menus от имени суперпользователя (root)
* Добавьте
```
#include "/var/cache/xdg-menu/WindowMaker/wmrc"
```
в ваш файл меню.
### Fvwm2
#### С xdg_menu
Сгенерируйте меню
```
$ 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
```
#### С update-menus
* Рас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
```
$ xdg_menu --format blackbox --root-menu /etc/xdg/menus/arch-applications.menu >my-menu
```
Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
```
[include] (my-menu)
```
#### С update-menus
* Расcкоментируйте blackbox in /etc/update-menus.conf
* Выполните update-menus от имени суперпользователя (root)
* Измените файл меню, чтобы включить сгенерированное меню.
Например добавьте строку:
```
[include] (/var/cache/xdg-menu/blackbox/boxrc)
```
## Смотрите также
* [archlinux-xdg-menu](https://www.archlinux.org/packages/?name=archlinux-xdg-menu)
* [Стандарт Free Desktop](http://standards.freedesktop.org/menu-spec/menu-spec-latest.html)
* [A workaround for sawfish](/index.php/Sawfish "Sawfish")