[Comm] Q/A: %update_menus
php-coder
=?iso-8859-1?q?php-coder_=CE=C1_ngs=2Eru?=
Пн Окт 18 13:31:44 MSD 2004
0000100101011110100100101::18.10.2004::0110001001001000100111100100010
Привет, Linuxоиды!
Я тут разобрался с тем, как "подружить" программу с системным меню
ALTLinux и решил обобщить все, что мне удалось узнать в форме
"вопрос-ответ". Я надеюсь, что никто не будет против, что я запостил
его сюда. Я был бы очень рад, если бы эта информация показалось бы
кому-нибудь полезной...
Q: Как добавить программу в меню?
A: В ALTLinux существует общесистемное меню. Оно заимствовано из
Debian и представляет собой меню, которое не зависит от какого-либо
конкретного оконного менеджера, т.е. оно является универсальным. Все
(__FIXME__: все ли?) менеджеры окон в ALTLinux имеют поддержку
общесистемного меню. Это значит, что, внезависимости от того
используете ли вы KDE, Gnome, XFCE, IceWM, Fluxbox или любой другой
оконный менеджер, редактор gvim вы всегда сможете найти в
Приложения->Редакторы.
Для того, чтобы ваша программа стала доступной в этом меню, нужно
сделать следующее:
- поместить файл с описанием программы в /usr/lib/menu/имя_программы
- обновить системное меню, вызвав update-menus
Файл с описанием программы состоит из нескольких строк, имеющих
следующий формат:
?package(имя_пакета):\
переменная1=значение1 \
переменная2=значение2
Какие переменные бывают и какие значения они могут принимать:
needs -- где может запускаться данная программа: в иксах (x11),
в любом текстовом терминале (text) или только в консоли (vc).
Также возможны значения wm, fvwmmodule и fvwm2module. Первое
значение используется для запуска другого оконного менеджера (т.е.
вы добавляете описание своего WM и он стнет доступен для запуска в
других оконных менеджерах). Также, в качестве значения, возможно
указать имя оконного менеджера для того, чтобы данная программа
отображалась в меню только этого менеджера окон. Это удобно
использовать для разных специфичных программ и встроенных в WM
комманд, таких как завершить сеанс, перечитать настройки или
перезапустить менеджер окон. Вторые два значения используются для
модулей, совместимых с fvwm версии 1.x и 2.x соответственно.
section -- секция в которой будет располагаться программа. Доступные
следующие предопределенные значения:
__FIXME__: Здесь должен быть _полный_ список значений, принимаемый
переменной section.
icon -- название иконки, которое будет соответствовать пункту меню
с данной программой. Иконка должна располагаться в /usr/share/icons
(__FIXME__: возможно также и в /usr/share/icons/mini?) и
удовлетворять следующим условиям:
- размер не больший чем 32x32 пикселей
- формат xpm или png (__FIXME__: может быть какой-нибудь еще?)
- использовать не более 24 цветов
- по возможности иметь прозрачный фон
title -- название программы, которое будет отображаться в меню
(максимум два слова)
longtitle -- описание программы (одно предложение)
sort -- используется для того, чтобы явно указать местоположение
пункта в секции. Значением является число. Если оно начинается с
символа '$', то пункт будет находиться на указанном месте от начала
секци. Если же с символа '|', то отсчет будет вестись с конца секции.
Пример: sort=|2 -- пункт будет вторым снизу. (__FIXME__: у меня
почему-то не всегда все сортируется как нужно :(( Особенно от
начала секции... :(()
command -- комманда, которая будет выполнена при выборе этого пункта
меню. Путь, лучше всего, указывать абсолютный, а не полагаться на
$PATH, т.к. вполне возможно, что эта же программа другой версии будет
установлена в /usr/local/bin и тогда запускаться будет именно она, а
не программа, установленная из вашего пакета.
hotkey -- __FIXME__: незнаю что написать, так как у меня ничего не
заработало и я не совсем ясно представляю себе для чего этот парметр :))
hints -- __FIXME__: примерно представляю себе для чего это, но лично
не использовал, да и в ALTLinux, как я понял, функция группировки меню
отключена (hints_optimize=false по умолчанию).
Следующим вашим шагом будет добавление нескольких строчек в spec-файл:
...
SourceN: %name.menu
...
%install
...
%__mkdir_p %buildroot%_menudir
%__mv %SOURCEN %buildroot%_menudir/%name
...
%post
%update_menus
...
%postun
%clean_menus
...
%files
...
%_menusdir/*
Этим самым мы позаботились о том, чтобы наш menu-файл оказался в
/usr/lib/menu и о том, чтобы после установки/удаления пакета обновлялось
системное меню.
Подробности вы всегда сможете найти в man 5 menufile и в
/usr/share/doc/menu-%version/*
--
С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
Registered Linux User #327594
ALT Linux Master 2.2 (kernel 2.4.27)
010010010010010001010101100::Linux RuleZz!::10001001000100010001000111
Подробная информация о списке рассылки community