# Xdg-menu (Русский)

Состояние перевода: На этой странице представлен перевод статьи Xdg-menu. Дата последней синхронизации: 27 марта 2016. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Меню XDG создаёт меню для оконных менеджеров используя Стандарт Меню Free Desktop. Вы можете установить archlinux-xdg-menu из официальных репозиториев.

Поддерживаются следующие оконные менеджеры:

- twm
- ion3
- WindowMaker
- fvwm2
- icewm
- blackbox
- fluxbox
- openbox
- awesome

Также с XDG совместимы: KDE, Gnome, Xfce, Enlightenment.

### Иерархия меню

- 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

    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

    $ 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
- Стандарт Free Desktop
- A workaround for sawfish

Categories:

- Русский
- Desktop environments (Русский)