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

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Состояние перевода: На этой странице представлен перевод статьи Xdg-menu. Дата последней синхронизации: 27 марта 2016. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Tango-preferences-desktop-locale-modified.pngПеревод этой статьи или раздела не отражает оригинальное содержание.Tango-preferences-desktop-locale-modified.png

Причина: Last updated in 2016 (Discuss)

Меню 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)

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