<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>20797</bug_id>
          
          <creation_ts>2009-07-16 15:34:31 +0400</creation_ts>
          <short_desc>Хорошо бы отделить файлы с описаниями меню от всего остального</short_desc>
          <delta_ts>2009-07-28 01:52:51 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>gnome-menus</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton V. Boyarshinov">boyarsh</reporter>
          <assigned_to name="Yuri N. Sedunov">aris</assigned_to>
          <cc>aen</cc>
    
    <cc>anubix</cc>
    
    <cc>aris</cc>
    
    <cc>lav</cc>
    
    <cc>mike</cc>
    
    <cc>msp</cc>
    
    <cc>shrek</cc>
    
    <cc>viy</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>94739</commentid>
    <comment_count>0</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-07-16 15:34:31 +0400</bug_when>
    <thetext>Хорошо бы отделить файлы с описаниями меню (*.menu) от всего остального (*directory, переводы), чтоб можно было создавать кастомизированные меню для дистрибутивов без хаков.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94752</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-16 16:33:31 +0400</bug_when>
    <thetext>Я правильно понял, что их хочется развести по разным пакетам?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94756</commentid>
    <comment_count>2</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-07-16 16:40:55 +0400</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; Я правильно понял, что их хочется развести по разным пакетам?

Да. Причём как-нибудь так, чтоб gnome-menus(с переводами) зависел от какого-нибудь абстрактного provides, который можно было бы провайдить gnome-menus(который с файлами) и на выбор другими пакетами.

Сейчас же либо меню по умолчанию либо отваливаются переводы секций...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94780</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-17 11:19:40 +0400</bug_when>
    <thetext>У кого-нибудь есть возражения, если я этим займусь (aris@, shaba@)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94792</commentid>
    <comment_count>4</comment_count>
    <who name="Yuri N. Sedunov">aris</who>
    <bug_when>2009-07-17 13:50:57 +0400</bug_when>
    <thetext>(In reply to comment #3)
&gt; У кого-нибудь есть возражения, если я этим займусь (aris@, shaba@)?
У меня нет. Шабалин, видимо, уже не ответит, ибо в отпуске.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94888</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-19 20:53:44 +0400</bug_when>
    <thetext>Так, а кто-нибудь может мне объяснить сложную взаимосвязь .menu-части пакетов altlinux-menus и gnome-menus?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94899</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-19 23:52:07 +0400</bug_when>
    <thetext>Взаимосвязь altlinux-menus и gnome-menus стала понятнее, но теперь возник новый вопрос, который я лучше положу в отдельный баг.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94906</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-20 01:43:14 +0400</bug_when>
    <thetext>Ну и наконец, по существу бага. В общем, я понял твою беду: тебе нужно устроить совсем могучий локдаун, поэтому советовать писать override где-нить в /etc/xdg/menus/applications-merged/, пожалуй, не буду - замучаешься :) Как назвать пакет? gnome-menus-structure не очень нравится, хотя по сути вроде правильно...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95004</commentid>
    <comment_count>8</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2009-07-21 15:29:44 +0400</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Ну и наконец, по существу бага. В общем, я понял твою беду: тебе нужно устроить
&gt; совсем могучий локдаун, поэтому советовать писать override где-нить в
&gt; /etc/xdg/menus/applications-merged/, пожалуй, не буду - замучаешься :) 
Ну, собственно это тоже вариант, но я не совсем понял как им воспользоваться. Так, чтоб не писать в &quot;чужие&quot; файлы.

&gt; Как
&gt; назвать пакет? gnome-menus-structure не очень нравится, хотя по сути вроде
&gt; правильно...
почему бы и нет?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95052</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-22 05:50:35 +0400</bug_when>
    <thetext>Я таки сделал оверрайд. Если интересно, как, можно почитать дальше. На самом деле всё относительно просто, но пункт 2 отдаёт грязным хаком, хоть я и попытался его отмыть. Вероятно, правильнее всё-таки отключать создание иерархии меню целиком через вынос этой иерархии в отдельный пакет, о чём и баг.

Итак, задача: сделать меню &quot;Приложения&quot; одноуровневым, состоящим из Firefox, GCalcTool и компонентов OOo минус OOo Math. Ни один из существующих файлов не меняется.

1. Я использую то, что в нынешнем /etc/xdg/menus/applications.menu включается файлик applications-menueditor.menu, который в умолчальной конфигурации, по крайней мере у меня - отсутствует. Вообще-то я бы хотел воспользоваться applications-alt.menu, но он, к сожалению, застолблен пакетом altlinux-menus, и что самое обидное, при этом содержит лишь один пустой тег. Наверное, по нонешним временам это баг.

2. Поскольку applications.menu из пакета gnome-menus (который сейчас лежит в /etc/gnome/xdg - далее я его называю gnome-applications.menu) создаёт иерархию меню, нам нужно эту иерархию обратно удалить. Никаких тотальных действий для этого в menu-spec я не нашёл, поэтому выполняю следующий скрипт (его можно сделать лучше, но смысл...):
#!/bin/sh
{
  head -2
  echo &apos;&lt;Menu&gt;&lt;Name&gt;Applications&lt;/Name&gt;&apos;
  awk -F: &apos;/&lt;Name&gt;.*&lt;\/Name&gt;/ &amp;&amp; ! /&lt;Name&gt;Applications&lt;\/Name&gt;/ &amp;&amp; ! /&lt;Name&gt;Office&lt;\/Name&gt;/ { print &quot;&lt;Menu&gt;\n&quot; $0 &quot;\n&lt;Deleted/&gt;&lt;/Menu&gt;&quot; }&apos;
  echo &apos;&lt;/Menu&gt;&apos;
} &lt;gnome-applications.menu &gt;delete-menus-except-office.menu
- после чего кладу delete-menus-except-office.menu в /etc/xdg/menus и делаю ему &lt;MergeFile&gt; в applications-menueditor.menu (можно не мержить явным образом, а положить в applications-merged, но это рискованно).

Всё это я делал в предположении, что мусорных (тех которые не надо показывать) .desktop файлов до фига. Если их не до фига, то вместо удаления всех меню можно пройтись по ним и поставить &lt;Exclude&gt; на те файлы, которые не нужны (а ещё лучше удалить пакеты с ними, конечно). Пустые меню будут автоматически скрыты (по крайней мере, таковы умолчания сейчас).

3. Добавляю через &lt;Include&gt; дополнительные элементы и удаляю через &lt;Exclude&gt; OOo Math.

4. Мне не нужно меню Office (пусть всё лежит на верхнем уровне), поэтому я добавляю перед &lt;/Menu&gt; верхнего уровня такую строчку:
&lt;DefaultLayout inline=&quot;true&quot; inline_limit=&quot;10&quot;/&gt;&lt;!--разворачивать меню меньше 10 пунктов --&gt;

С меню settings (&quot;Система&quot;) примерно такая же картинка, только там сейчас не вмерживается settings-alt.menu, зато (согласно menu-spec; на текущем GNOME проверено, работает) можно создать каталог settings-merged/, положить в него файл с оверрайдом и всё будет так же. Но с этим каталогом есть одна деталь, которую нужно учитывать: оттуда мержится всё подряд в произвольном порядке (эффект тега &lt;DefaultMergeDirs/&gt;).

Что плохо в этом подходе:
1. &quot;Шей да пори - не будет пустой поры&quot; - сначала создаём меню, потом удаляем...
2. Мне не удалось расположить файлы выше, чем содержимое меню. Подозреваю, что из-за DefaultLayout и Layout, описанных в /etc/xdg/menus/applications.menu, и я уже не уверен, что это хорошо.

Файлы сейчас приаттачу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95256</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-07-25 11:29:01 +0400</bug_when>
    <thetext>(In reply to comment #7)
&gt; Как назвать пакет? gnome-menus-structure не очень нравится, хотя по сути вроде
&gt; правильно...
gnome-menu-base/common?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95285</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-25 13:42:35 +0400</bug_when>
    <thetext>Ну, это не -base и не -common. -common как раз будет в основном пакете, если так можно выразиться,- локали и файлы .directory. Кстати, это мысль, надо над ней тоже подумать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95290</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-25 14:59:58 +0400</bug_when>
    <thetext>Ещё немного подумав и посмотрев, я решил сделать вот как:
1. gnome-menus-common - содержит только локализации (пока, по крайней мере)
2. gnome-menus-default - содержит штатное (апстримовое) меню GNOME (то есть файлы .menu и .directory - поскольку .menu ссылаются на .directory файлы, нет смысла их разделять по пакетам - разве только если захочется использовать те же названия меню, но не использовать структуру - но это, извините, уже граничит с извращением).
gnome-menus-default требует gnome-menus-common, провайдит gnome-menus и обсолетит gnome-menus меньше той версии, которая сейчас в Сизифе. Любой branding-whatever-gnome-settings тоже требует gnome-menus-common и провайдит gnome-menus. Если хочется аккуратности, то пакеты branding-*-gnome-settings должны конфликтовать с gnome-menus-default и друг с другом.
Но как по мне -  это деление всё равно отдаёт искусственностью, так что лучше почитать моё письмо в devel@ с темой RFC: XDG menus и согласиться с ним :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95291</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-07-25 17:45:30 +0400</bug_when>
    <thetext>Ну я-то не нашёл, с чем там не согласиться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95347</commentid>
    <comment_count>14</comment_count>
    <who name="Zerg">anubix</who>
    <bug_when>2009-07-27 20:10:04 +0400</bug_when>
    <thetext>(В ответ на комментарий №9)
&gt; Вообще-то я бы хотел воспользоваться
&gt; applications-alt.menu, но он, к сожалению, застолблен пакетом altlinux-menus,
Не он в пакете menu. Раньше я туда структуру, вроде, генерировал из menu-файлов. Уже не помню точно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95348</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-27 20:51:30 +0400</bug_when>
    <thetext>Ах да, файлы-то я и забыл. Если кому-то ещё интересно, то вот.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95349</commentid>
    <comment_count>16</comment_count>
      <attachid>3698</attachid>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-27 20:54:44 +0400</bug_when>
    <thetext>Created attachment 3698
Удалятель всех кроме Office стандартных подменю GNOME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95350</commentid>
    <comment_count>17</comment_count>
      <attachid>3699</attachid>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-27 20:57:23 +0400</bug_when>
    <thetext>Created attachment 3699
Переписанное меню Applications

...состоящее из содержимого подменю Office (кроме OOo Math), Firefox и GCalcTool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95363</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Rusakov">ktirf</who>
    <bug_when>2009-07-28 01:52:51 +0400</bug_when>
    <thetext>Файлы .menu и файлы .directory вынесены в пакет gnome-menus-default, файлы с локалями теперь лежат в gnome-menus-common. Кастомизируйте на здоровье. Если хочется использовать штатное меню, но его слегка поменять, кладите файлы .menu в каталог /etc/xdg/menus/applications-merged/. Если нужно полностью заменить меню, выкидывайте gnome-menus, ставьте в свой branding-пакет Provides: gnome-menus и пишите собственный неповторимый файл /etc/xdg/menus/gnome-applications.menu. Отныне Provides: gnome-menus в branding-пакетах хаком не является.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3698</attachid>
            <date>2009-07-27 20:54:44 +0400</date>
            <delta_ts>2009-07-27 20:54:44 +0400</delta_ts>
            <desc>Удалятель всех кроме Office стандартных подменю GNOME</desc>
            <filename>delete-menus-except-office.menu</filename>
            <type>application/xml</type>
            <size>737</size>
            <attacher name="Alexey Rusakov">ktirf</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIE1lbnUgUFVCTElDICItLy9mcmVlZGVza3RvcC8vRFREIE1lbnUgMS4wLy9FTiIK
ICAgICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zdGFuZGFyZHMvbWVudS1zcGVjLzEuMC9t
ZW51LmR0ZCI+Cgo8TWVudT4KICA8TmFtZT5BcHBsaWNhdGlvbnM8L05hbWU+Cgk8TWVudT4KCSAg
ICA8TmFtZT5BY2Nlc3NvcmllczwvTmFtZT4KCTxEZWxldGVkLz4KCTwvTWVudT4KCTxNZW51PgoJ
ICAgIDxOYW1lPlVuaXZlcnNhbCBBY2Nlc3M8L05hbWU+Cgk8RGVsZXRlZC8+Cgk8L01lbnU+Cgk8
TWVudT4KCSAgICA8TmFtZT5EZXZlbG9wbWVudDwvTmFtZT4KCTxEZWxldGVkLz4KCTwvTWVudT4K
CTxNZW51PgoJICAgIDxOYW1lPkVkdWNhdGlvbjwvTmFtZT4KCTxEZWxldGVkLz4KCTwvTWVudT4K
CTxNZW51PgoJICAgIDxOYW1lPkdhbWVzPC9OYW1lPgoJPERlbGV0ZWQvPgoJPC9NZW51PgoJPE1l
bnU+CgkgICAgPE5hbWU+R3JhcGhpY3M8L05hbWU+Cgk8RGVsZXRlZC8+Cgk8L01lbnU+Cgk8TWVu
dT4KCSAgICA8TmFtZT5JbnRlcm5ldDwvTmFtZT4KCTxEZWxldGVkLz4KCTwvTWVudT4KCTxNZW51
PgoJICAgIDxOYW1lPk11bHRpbWVkaWE8L05hbWU+Cgk8RGVsZXRlZC8+Cgk8L01lbnU+Cgk8TWVu
dT4KCSAgICA8TmFtZT5TeXN0ZW08L05hbWU+Cgk8RGVsZXRlZC8+Cgk8L01lbnU+Cgk8TWVudT4K
CSAgICA8TmFtZT5PdGhlcjwvTmFtZT4KCTxEZWxldGVkLz4KCTwvTWVudT4KPC9NZW51Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3699</attachid>
            <date>2009-07-27 20:57:23 +0400</date>
            <delta_ts>2009-07-27 20:57:23 +0400</delta_ts>
            <desc>Переписанное меню Applications</desc>
            <filename>applications-menueditor.backup.menu</filename>
            <type>application/xml</type>
            <size>567</size>
            <attacher name="Alexey Rusakov">ktirf</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIE1lbnUgUFVCTElDICItLy9mcmVlZGVza3RvcC8vRFREIE1lbnUgMS4wLy9FTiIK
ICAgICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zdGFuZGFyZHMvbWVudS1zcGVjLzEuMC9t
ZW51LmR0ZCI+CjxNZW51PgogICAgPE5hbWU+QXBwbGljYXRpb25zPC9OYW1lPgogICAgPCEtLSBS
ZW1vdmUgc3B1cmlvdXMgU2V0dGluZ3MgbWVudSBmcm9tIEphdmEgLS0+CiAgICA8TWVudT4KCSAg
ICA8TmFtZT5TZXR0aW5nczwvTmFtZT4KCSAgICA8RGVsZXRlZCAvPgogICAgPC9NZW51PgogICAg
PE1lcmdlRmlsZT5kZWxldGUtc3RhbmRhcmQtZ25vbWUtbWVudXMubWVudTwvTWVyZ2VGaWxlPgog
ICAgPEluY2x1ZGU+CgkgICAgPEZpbGVuYW1lPmZpcmVmb3guZGVza3RvcDwvRmlsZW5hbWU+Cgkg
ICAgPEZpbGVuYW1lPmdjYWxjdG9vbC5kZXNrdG9wPC9GaWxlbmFtZT4KCTwvSW5jbHVkZT4KCTxF
eGNsdWRlPjxGaWxlbmFtZT5vb21hdGguZGVza3RvcDwvRmlsZW5hbWU+PC9FeGNsdWRlPgoJPERl
ZmF1bHRMYXlvdXQgaW5saW5lPSJ0cnVlIiBpbmxpbmVfbGltaXQ9IjIwIi8+CjwvTWVudT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>