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

From ArchWiki
(Redirected from Меню Xdg)
Jump to: navigation, search
Состояние перевода: На этой странице представлен перевод статьи 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)

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