* [Comm] Q/A: %update_menus
@ 2004-10-18 9:31 php-coder
2004-10-18 10:40 ` Igor
0 siblings, 1 reply; 4+ messages in thread
From: php-coder @ 2004-10-18 9:31 UTC (permalink / raw)
To: community
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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Comm] Q/A: %update_menus
2004-10-18 9:31 [Comm] Q/A: %update_menus php-coder
@ 2004-10-18 10:40 ` Igor
2004-10-18 11:46 ` Re[2]: " php-coder
2004-10-18 12:14 ` Andrey Rahmatullin
0 siblings, 2 replies; 4+ messages in thread
From: Igor @ 2004-10-18 10:40 UTC (permalink / raw)
To: community
>> Я тут разобрался с тем, как "подружить" программу с системным меню...
>> ....
>> title -- название программы, которое будет отображаться в меню
>> (максимум два слова)
несколько странное ограничение в 2 слова...(например пункт: "Центр настройки
KDE" имеет 3 слова...)
Вот мой kdemultimedia-kmix ([K]->[Мультимедиа]->[Звук]->[KMix (Микшер звука)])
+++++++++++++++++++++
?package(kdemultimedia-kmix): needs="kde" extra_filename="kmix"
section="Multimedia/Sound" title="KMix" icon="kmix.png" command="kmix"
extra_command="kmix -caption \"%c\" %i %m" genericname="Sound Mixer"
mimetypes="" hints="Qt,KDE,AudioVideo"
extra_opt="\\nDocPath=kmix/index.html\\nTerminalOptions=\\nPath=\\nTerminal=0\\nX-KDE-StartupNotify=true\\nX-DCOP-ServiceType=Unique"
+++++++++++++++++++++
т.е. title="KMix", а на самом деле "KMix (Микшер звука)",
честно говоря сходу не видно откуда берется "(Микшер звука)", добавленное к
KMix...
>> hotkey -- __FIXME__: незнаю что написать, так как у меня ничего не
>> заработало и я не совсем ясно представляю себе для чего этот парметр :))
видать это как в мастдайке, для таких, типа "Выполнить" = "win+R" или
"експлорер" = "win+E", лично мне бы удобно было по комбинации вызывать mc...
>> hints -- __FIXME__: примерно представляю себе для чего это, но лично
>> не использовал, да и в ALTLinux, как я понял, функция группировки меню
>> отключена (hints_optimize=false по умолчанию).
Вы уверены, что этот параметр связан с группировкой? Судя по названию это
должны быть всплывающие подсказки для пункта меню. А hints_optimize=false,
также по названию, мне говорит, что это какая-то оптимизация этой подсказки,
например, оптимизация может выглядеть след. образом: когда длинная подсказка,
ее разбивать автоматом на несколько строк... ну или типа того...
Еще вроде не встретил создания собственной группы пунктов меню (простите, если
пропустил)
P.S. Вообще приятная дока, изменения этой и будущие другие выкидывайте на
всеобщее обозрение - это правильно.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re[2]: [Comm] Q/A: %update_menus
2004-10-18 10:40 ` Igor
@ 2004-10-18 11:46 ` php-coder
2004-10-18 12:14 ` Andrey Rahmatullin
1 sibling, 0 replies; 4+ messages in thread
From: php-coder @ 2004-10-18 11:46 UTC (permalink / raw)
To: Igor
0000100101011110100100101::18.04.2004::0110001001001000100111100100010
Здравствуйте, Igor!
Отвечаю на Ваше письмо:
>>> title -- название программы, которое будет отображаться в меню
>>> (максимум два слова)
I> несколько странное ограничение в 2 слова...(например пункт: "Центр настройки
I> KDE" имеет 3 слова...)
Я не из головы это взял :)) Я просто несколько дней подряд читал
на английском тысечестрочную доку
(/usr/share/doc/menu-2.1.5/menu.txt) Все данные оттуда взяты. Это
просто краткая выжимка, резюме что ли...
Думаю, наверное, можно и три слова :))
I> Вот мой kdemultimedia-kmix ([K]->[Мультимедиа]->[Звук]->[KMix (Микшер звука)])
I> +++++++++++++++++++++
I> ?package(kdemultimedia-kmix): needs="kde" extra_filename="kmix"
I> section="Multimedia/Sound" title="KMix" icon="kmix.png" command="kmix"
I> extra_command="kmix -caption \"%c\" %i %m" genericname="Sound Mixer"
I> mimetypes="" hints="Qt,KDE,AudioVideo"
I> extra_opt="\\nDocPath=kmix/index.html\\nTerminalOptions=\\nPath=\\nTerminal=0\\nX-KDE-StartupNotify=true\\nX-DCOP-ServiceType=Unique"
I> +++++++++++++++++++++
I> т.е. title="KMix", а на самом деле "KMix (Микшер звука)",
Обратите внимание, что в title-то как раз всего одно слово!
Остальное берется из другой переменной (скорее всего из
genericname, а то что у вас на русском так это из-за использования
специальной ф-ции).
I> честно говоря сходу не видно откуда берется "(Микшер звука)", добавленное к
I> KMix...
Берется он из другой переменной. Это все прописано в
/etc/menu-methods/ там есть файл, отвечающий за генерирование меню
для KDE. В нем видать прописано, что выводить не только $title, но
также и в скобочках значение $genericname
I> видать это как в мастдайке, для таких, типа "Выполнить" = "win+R" или
I> "експлорер" = "win+E", лично мне бы удобно было по комбинации вызывать mc...
Хм... может и правда нужно использовать в комбинации с Win? Я
просто без нее :)) Надо будет попробовать -- ведь фичка-то удобная
:)) Хотя зачем она? Во флюксе, да и в KDE это можно сделать
средствами самого оконного менеджера... Вообщем, не совсем ясно ее
предназначение %))
I> Вы уверены, что этот параметр связан с группировкой? Судя по названию это
I> должны быть всплывающие подсказки для пункта меню. А hints_optimize=false,
I> также по названию, мне говорит, что это какая-то оптимизация этой подсказки,
I> например, оптимизация может выглядеть след. образом: когда длинная подсказка,
I> ее разбивать автоматом на несколько строк... ну или типа того...
После ваших слов я стал сомневаться :)) А вообще конечно уверен! Я
ведь читал :)) Может не правильно понял? Хотя вряд ли... Там даже
пример есть про редакторы... Это нужно, чтобы пункты в меню не
разрастались. Когда они достигнут определенного числа, они могут
выделиться в submenu. Я так это понял...
Думаю, что ваша догадка не верна -- у меня во Fluxbox ни каких
всплывающих подсказок нет. Потому что в самом WM они не
реализованы. А menu-methods вообще не зависит ни от какого WM'а...
I> Еще вроде не встретил создания собственной группы пунктов меню (простите, если
I> пропустил)
Можно, вроде. Я написал, к примеру, section="Session/User styles" и
все нормально сработало. Правда, русский не срабатывает...
I> P.S. Вообще приятная дока, изменения этой и будущие другие выкидывайте на
I> всеобщее обозрение - это правильно.
Спасибо!!! ;-))
P.S. Кстати, обратите внимание на то, что у Kmix присутствует
hints. Если включен режим группировки и пунктов меню оказываеться
много, то он может попасть либо в поджменю QT, либо KDE, либо в
AudioVideo -- в зависимости от того сколько будет приложений также
возможно попадающих в одну их этих секций. Хм.. Вроде ясно
объяснил. Надеюсь, вы поняли, что я хотел скзать :))
Удачи!
P.P.S. У вас дата сбита :(
--
С уважением, 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!::100010010001000100010001110
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Comm] Q/A: %update_menus
2004-10-18 10:40 ` Igor
2004-10-18 11:46 ` Re[2]: " php-coder
@ 2004-10-18 12:14 ` Andrey Rahmatullin
1 sibling, 0 replies; 4+ messages in thread
From: Andrey Rahmatullin @ 2004-10-18 12:14 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1045 bytes --]
On Sun, Apr 18, 2004 at 02:40:28PM +0400, Igor wrote:
> Вы уверены, что этот параметр связан с группировкой?
Всё правильно.
file://localhost/usr/share/doc/menu-2.1.9/menu.html/ch3.html#s3.3
"[...] The above hints will case menu to consider grouping emacs together
with other editors that are marked similar. For example, if vi on your
system has a hints="Small,Expert" definition, and there are too many
entries in the /Apps/Editors menuentry, then menu will consider creating a
/Apps/Editors/Expert submenu, and put both vi and emacs in it. (of course,
only if you have hint_optimize=true in your /etc/menu-methods/menu.h
file)."
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
> Можно ли программно установить uid процесса = 0, если приложение
> запущено без флажка set user ID on execution, от простого пользователя,
> и без помощи программ типа su, sudo и т.п. приложений?????
Если вы найдёте способ, сообщите нам, пожалуйста, и мы немедленно выпустим
security update.
-- voins in community@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-10-18 12:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-18 9:31 [Comm] Q/A: %update_menus php-coder
2004-10-18 10:40 ` Igor
2004-10-18 11:46 ` Re[2]: " php-coder
2004-10-18 12:14 ` Andrey Rahmatullin
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git