UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

499 lines (330 loc) 18.3 kB
**Состояние перевода:** На этой странице представлен перевод статьи [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")