Jump to content

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

4 languages

- English
- Español
- 日本語
- 中文（简体）

From ArchWiki

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

xdg-menu — это инструмент, генерирующий меню на основе информации из XDG Desktop Menu для следующих оконных менеджеров:

- awesome
- Blackbox
- Fluxbox
- FVWM2
- IceWM
- Openbox
- twm
- Window Maker

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

    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

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

    $ 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

    $ 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`.

### FluxBox

#### С xdg_menu

    $ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu > ~/.fluxbox/my-menu

Измените файл меню, чтобы включить сгенерированное меню.

Например добавьте строку:

    [include] (my-menu)

#### С update-menus

- Расскоментируйте fluxbox в `/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 в `/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 в `/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

Используйте

    $ 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 в `/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 в `/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 в `/etc/update-menus.conf`.
- Выполните `update-menus` от имени суперпользователя (root).
- Измените файл меню, чтобы включить сгенерированное меню.

Например добавьте строку:

    [include] (/var/cache/xdg-menu/blackbox/boxrc)

## Смотрите также

- Sawfish#Menus
- https://github.com/gapan/xdgmenumaker

Category:

- Freedesktop.org (Русский)