ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [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

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