From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 18 Oct 2004 16:31:44 +0700 From: php-coder X-Mailer: The Bat! (v1.61) X-Priority: 3 (Normal) Message-ID: <162472003.20041018163144@ngs.ru> To: community@altlinux.ru MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit Subject: [Comm] Q/A: %update_menus X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Oct 2004 09:36:31 -0000 Archived-At: List-Archive: List-Post: 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