Bug 20829 - Even less hacks
Summary: Even less hacks
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: gnome-menus (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Yuri N. Sedunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 20852
Blocks:
  Show dependency tree
 
Reported: 2009-07-20 00:30 MSD by Alexey Rusakov
Modified: 2009-08-04 16:23 MSD (History)
8 users (show)

See Also:


Attachments
/etc/gnome/xdg/menus не нужен, используем стандартное место (1.18 KB, patch)
2009-07-20 00:30 MSD, Alexey Rusakov
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Rusakov 2009-07-20 00:30:48 MSD
Created attachment 3677 [details]
/etc/gnome/xdg/menus не нужен, используем стандартное место

Когда-то давным-давно был ALT Bug 9592, патч из которого до сих пор успешно прилагается. Однако вдумчивое чтение спецификации fd.o, в частности, раздела File locations: http://standards.freedesktop.org/menu-spec/latest/ar01s02.html, навело меня на мысль, что положив файл applications.menu в правильное место и назвав его правильным образом, можно избавиться от странного места /etc/gnome/xdg/menus, в котором всё равно больше ничего кроме этого файла не лежит. Предположение оказалось верным: следующая команда
mv /etc/gnome/xdg/menus/applications-merged/applications.menu /etc/xdg/menus/applications-merged/gnome-applications.menu
оставляет результирующую структуру меню такой же, но при этом избавляет нас от необходимости хардкодить в libgnome-menus путь /etc/gnome/xdg/menus и вообще использовать этот путь.
Итого, предлагается:
1. Применить к gnome-menus.spec прилагаемый патч.
2. Выбросить gnome-menus-2.14-add-config-dir.patch за ненадобностью.
Comment 1 Sergey V Turchin 2009-07-22 15:01:06 MSD
Представь, если я сделаю то же самое для 2-х KDE
Comment 2 Alexey Rusakov 2009-07-22 15:18:40 MSD
Будет много-много хороших меню :)
Понятно, в общем, нужен ещё один патч, который приведёт gnome-menus в соответствие с menu-spec и позволит зачитывать конфигурацию меню из средо-специфичных файлов (gnome-applications.menu, kde-applications.menu и т.п.), в зависимости от состояния переменной XDG_MENU_PREFIX. На данный момент то ли механизма совсем нет, то ли он не работает, потому что переменная не выставляется.
Comment 3 Alexey Rusakov 2009-07-23 02:21:28 MSD
Проверил. В GNOME механизм замечательно работает, достаточно выставить упомянутую переменную :)
Пойду писать фичереквест на gnome-session.
Comment 4 Repository Robot 2009-07-23 10:42:08 MSD
gnome-session-2.26.2-alt2 -> sisyphus:

* Thu Jul 23 2009 Yuri N. Sedunov <aris@altlinux> 2.26.2-alt2

- set XDG_MENU_PREFIX variable to "gnome-" in startgnome2 (closes #20829)
Comment 5 Alexey Rusakov 2009-07-23 14:58:19 MSD
Таки 20852 закрыт этой сборкой, а не 20829 :)
Comment 6 Sergey V Turchin 2009-07-23 15:56:13 MSD
Проблема будет во всех меню, отличных от того, которое захотим кастомизировать, т.к. applications-merged/my-custom.menu будет зависеть на конкретную структуру меню, но подгребаясь всеми остальными приводить к нежелательным результатам.

XDG_MENU_PREFIX здесь не поможет, зато давно работает текущий вариант, когда applications-merged/my-custom.menu находиться в недоступном для остальных месте.
Comment 7 Alexey Rusakov 2009-07-23 17:08:20 MSD
Мысль понятна. Но давайте тогда хотя бы не хардкодить такие вещи. Давайте, например, добавлять в XDG_CONFIG_DIRS пути типа /etc/gnome или /etc/kde. Даже это будет поприличнее.
Comment 8 Sergey V Turchin 2009-07-23 17:27:05 MSD
Выльестся в тот же самуй же хардкод.
KDE-шная программа может быть запущена не из-под GNOME, но меню GNOME-specific ей вряд ли будет нужен.
Кто ей выставит нужный XDG_CONFIG_DIRS? Тот самый хардкод.
Comment 9 Alexey Rusakov 2009-07-23 17:54:18 MSD
XDG_CONFIG_DIRS можно выставить при входе в сессию, точно так же как по результатам Bug 20852 в GNOME будет выставляться XDG_MENU_PREFIX. Но для начала я бы всё-таки задался вопросом, нужно ли придумывать отдельные applications-merged для разных сред. Просто ты для Юниора когда-то придумывал иерархию только под KDE, и в Юниоре только KDE и был, остальные среды на птичьих правах. Сейчас boyarsh@ проводит кастомизацию дистрибутива для конкретного заказчика, в этом дистрибутиве будет только GNOME.

Если всё-таки нужно, давайте выставлять XDG_CONFIG_DIRS - всё же это дополнительная ручка для варьирования путей, в отличие от прибивания гвоздями какого-то определённого пути в код, мимо которого потом ни проехать, ни пройти.
Comment 10 Sergey V Turchin 2009-07-23 18:21:21 MSD
(В ответ на комментарий №9)
> я бы всё-таки задался вопросом, нужно ли придумывать отдельные
> applications-merged для разных сред.
Когда в applications.menu переместиться структура меню, которая сейчас раздельно, тогда будет не нужно.

> Просто ты для Юниора когда-то придумывал
> иерархию только под KDE, и в Юниоре только KDE и был, остальные среды на
> птичьих правах. Сейчас boyarsh@ проводит кастомизацию дистрибутива для
> конкретного заказчика, в этом дистрибутиве будет только GNOME.
Я делал так, что б не гадить остальным.

> Если всё-таки нужно, давайте выставлять XDG_CONFIG_DIRS 
Я уже объяснил, почему это будет тот же самый патч, только выставляющий XDG_CONFIG_DIRS, а не просто добавляющий каталог. Т.е. шило на мыло, но реализация сложнее.
Comment 11 Alexey Rusakov 2009-07-23 19:30:30 MSD
Это не хардкод. Отредактировать /usr/bin/start* можно обычным текстовым редактором (из-под рута, конечно) - это, конечно, не конфигфайл, но всё-таки. Дальше, тот же XDG_CONFIG_DIRS можно изменить из какого-нибудь ~/.xinitrc, тем самым, например, в XFCE сделать структуру меню от GNOME, и наоборот, в GNOME от "родной" структуры отказаться. Ничего этого сейчас сделать нельзя, иначе чем удалив файлы из /etc/*/xdg/menus.
Comment 12 Sergey V Turchin 2009-07-23 19:32:37 MSD
(В ответ на комментарий №11)
> Это не хардкод.
Этот "не хардкод" не будет работать для программы из комплекта GNOME, запущенной из любой другой среды.
Comment 13 Alexey Rusakov 2009-07-23 19:34:58 MSD
Плохо ли это? Если в каком-нибудь гномьем редакторе меню, запущенном в другой среде, будет показываться то меню, которое актуально для этой среды, а не для GNOME - разве это плохо?
Comment 14 Sergey V Turchin 2009-07-23 19:44:30 MSD
Редактор меню -- единственная программа, в которой текущее меню имеет смысл, но она сама не имеет смысла, если есть более родной редактор меню.
Хотя, в этом случае, все-таки не должно быть никаких проблем.

Проблема, пожалуй, только в файле кастомизации, если он частично покорежит то меню, которое не учитывает.
Comment 15 Alexey Rusakov 2009-07-29 10:22:23 MSD
Выключил /etc/gnome/xdg/menus, переместил структуру меню в gnome-applications.menu. Когда понадобится кастомизировать именно гномье меню, что-нибудь изменю (например, добавлю каталог /etc/xdg/menus/gnome-applications-merged/). Но я не слишком верю в то, что такие прецеденты будут.
Comment 16 Alexey Rusakov 2009-07-29 10:23:05 MSD
FIXED
Comment 17 Sergey V Turchin 2009-08-04 13:52:32 MSD
(В ответ на комментарий №15)
> /etc/xdg/menus/gnome-applications-merged/
Но, это, ведь, то же, что и /etc/gnome/xdg/menus/applications-merged/ , только сбоку ...
Comment 18 Alexey Rusakov 2009-08-04 14:35:57 MSD
(В ответ на комментарий №17)
> (В ответ на комментарий №15)
> > /etc/xdg/menus/gnome-applications-merged/
> Но, это, ведь, то же, что и /etc/gnome/xdg/menus/applications-merged/ , только
> сбоку ...
В принципе да, но оно, по крайней мере, лежит внутри XDG_CONFIG_DIR. Ну и опять-таки - пусть оно сначала понадобится.
Comment 19 Sergey V Turchin 2009-08-04 15:23:35 MSD
Тогда я в KDE ничего менять не буду до того времени, когда понадобиться.
Друг другу не мешаем.
Comment 20 Alexey Rusakov 2009-08-04 16:23:17 MSD
Да, конечно.