Awful.menu/ru

awful.menu является частью модуля awful которая обеспечивает создание меню с возможностью создания под-меню

Данный модуль был разработан для awesome 3

Установка awful.menu
Модуль автоматически загружается при старте, в случае если у вас есть в верхней части вашего файла конфигурации rc.lua следующий код: require("awful")

В общем, вы создаете ваше меню в виде таблицы содержащей другую таблицу для каждого элемента вашего меню. Первым элементом таблицы является метка, затем триггер, который может быть командой или другой таблицей меню, уставновка таблицы меню как item позволяет создать под-меню. Третий элемент является необязательным и указывает путь до иконки.

Далее приведен пример стандрартного меню из awesome rc.lua:

myawesomemenu = { { "manual", terminal .. " -e man awesome" }, { "edit config", terminal .. " -e nano ~/.config/awesome/rc.lua" }, { "restart", awesome.restart }, { "quit", awesome.quit } }

mymainmenu = awful.menu.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },                                       { "open terminal", terminal }                                      }                            })

Поскольку начиная с awesome 3.4.x ярлыки поддерживают конфигурацию ключей доступа: вы можете предварять символом '&' желаемую клавишу

{ "&firefox", "firefox", awful.util.getdir("config") .. "/firefox.png" },

Это позволит вам нажав Mod4 + W (сочетание клавиш по умолчанию) для отображения меню, а замем нажав клавишу "f" запустить firefox.

Сначала мы создаем таблицу myawesomemenu, которую будем использовать как подменю, затем создаем mymainmenu содержащую два пункта, один из которых наша таблица myawesomemenu, которая будет работать как подменю.

Теперь если мы ходить показать наше меню, у нас есть два способа.

Исользование виджета запуска(launcher widget):

mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),                                    menu = mymainmenu                                   })

Использование клавиатурного сочетания:

awesome.buttons({   button({ }, 3, function  mymainmenu:toggle end),    button({ }, 4, awful.tag.viewnext),    button({ }, 5, awful.tag.viewprev) })

Обратите внимание, что первый аргумент функции awful.menu.new это таблица которая может принимать следующие значения:
 * auto_expand: a boolean controlling the auto expand behaviour which is true by default;
 * [fg|bg]_[normal|focus], border_[color|width], submenu_icon, height, width: пользовательская тема является основной beautiful, все эти элементы являются необязательными;
 * items: собственно таблица элементов, которая описана выше;

Поведение меню

 * Нажатие левой кнопки запускает действие связанное с элементом или состояние меню открыть/закрыть, если параметр menu_toggle установлен как true.
 * Нажатие правой клавиши закрывает меню и все его подменю, это значит, что если вы закрываете подменю которое открывает другое подменю, вы закроете два подменю, но не родительское меню.

Tips

 * Вы можете использовать формат Pango для отображения ярлыков, это значит что вы можете сделать жирный, подчеркнутый или украшенный как вы хотите ярлык.
 * The triggered action associated to an item can be nil, meaning that if you click that item nothing will happen, the menu will not be destroyed, this can be used to create separators, categories or whatever.
 * Вы можете украсить ваше меню используя темы Beautiful.
 * Для пользователей Debian, вы можете поместить следующий скрипт в файл ~/.menu-methods, затем запустите update-menus для создания меню Debian
 * 1) !/usr/bin/install-menu
 * 2) дайте файлу права на исполнение
 * 3) разместите после ~/.menu-methods
 * 4) запустите update-menus
 * 5) по умолчанию будет создан ~/.config/awesome/menu.lua
 * 6) вам необходимо добавать require("menu") для использования menu.debian_menu

compat="menu-1"

!include menu.h

compat="menu-2" outputencoding= "UTF-8";

function q($s) = "\"" esc($s,"\\\"") "\""; function s($s) = replacewith(replacewith($s,"/","_"), " ", "_"); function findicon($filename)=       ifelsefile($filename, q($filename),        iffile("/usr/share/pixmaps/" $filename,                   q("/usr/share/pixmaps/" $filename))); function x11menu= "\t{"q(title)","q($command) ifnempty($icon, ","findicon($icon))"},\n"; function textmenu= "\t{"q(title)", \"x-terminal-emulator -e \".."q($command) ifnempty($icon, ","findicon($icon))"},\n";

supported; x11= x11menu; text= textmenu; endsupported;

startmenu=     s($section)" = {\n"; endmenu=       "}\n"; submenutitle=  "\t{"q(title)","s($section)"},\n"; genmenu=       "menu.lua"; rootsection=   "debian_menu"; userprefix=    "/.config/awesome/"; preoutput=     "-- automatically generated file. Do not edit (see /usr/share/doc/menu/html)\n\nmodule(\"menu\")\n\n";