Автор Тема: Изменение меню в SL [решено]  (Прочитано 5650 раз)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #15 : 01.10.2015 13:44:04 »
раскидать через puppet
Вот тут проблемка или я что-то неправильно сделал.
Файл ложится нормально в /etc/xdg/menus/xfce-applications-merged/10-xfce-applications.menu, но не применяется полностью. Поясню, например, скрывается только из раздела Education -- math.desktop, из раздела Multimedia скрывается kde4-k3b.desktop, из раздела Office -- kde4-okular.desktop и ещё draw.desktop из Graphics. Всё остальное на местах.
Но если сделать маленький трюк, скопировать файл на клиента через puppet, потом что-то в нём удалить, заново запустить вручную 'puppetd -t' (именно вручную!), файл при этом перезаписывается, то всё норм становится. 'puppetd -t' запускаю из графического сеанса через эмулятор терминала.

Где я промахнулся ? Предполагаю, что какой-то конфликт с объединением файлов .menu.

Вот содержимое файлика:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>
    <Name>Xfce</Name>

    <Menu>
        <Name>Accessories</Name>
        <Include>
          <Filename>kde4-k3b.desktop</Filename>
        </Include>
        <Exclude>
          <Filename>xfce4-clipman.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Multimedia</Name>
        <Exclude>
         <Filename>kde4-k3b.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Internet</Name>
        <Exclude>
         <Filename>remmina.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Office</Name>
        <Exclude>
         <Filename>kde4-okular.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Education</Name>
        <Exclude>
         <Filename>math.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Graphics</Name>
        <Exclude>
         <Filename>draw.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>System</Name>
        <Exclude>
         <Filename>kde4-k3b.desktop</Filename>
         <Filename>Thunar.desktop</Filename>
         <Filename>xfce4-terminal.desktop</Filename>
        </Exclude>
    </Menu>

    <MergeFile>50-xfce-applications.menu</MergeFile>

</Menu>
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #16 : 01.10.2015 13:47:07 »
Предполагаю, что какой-то конфликт с объединением файлов .menu.
Или дело в версиях каких-то пакетов, на машинах разный набор обновлений.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #17 : 02.10.2015 13:08:17 »
Или дело в версиях каких-то пакетов, на машинах разный набор обновлений.
Воспроизводимость 100 %, я проверил на SL32/64. Системы чистые, на ВМ смотрел.

Если в графическом сеансе удалить/изменить файл, а потом выполнить 'puppetd -t', то меню нормально читается.
Очень надеюсь, что мне кто-н. сможет объяснить почему так происходит... который день бьюсь...
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #18 : 02.10.2015 16:16:28 »
Поясню, например, скрывается только из раздела Education -- math.desktop, из раздела Multimedia скрывается kde4-k3b.desktop, из раздела Office -- kde4-okular.desktop и ещё draw.desktop из Graphics.
+ к этому ещё срабатывает Include:
        <Include>
          <Filename>kde4-k3b.desktop</Filename>
        </Include>
Просто чудеса какие-то... я не могу понять логику/порядок загрузки этих файлов .menu... и правила, по которым происходит MergeFile.
Вот это не могу найти, наверно в этом дело.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #19 : 02.10.2015 21:03:23 »
См.
Цитата: $ cat /etc/xdg/menus/xfce-applications-merged/50-xfce-applications.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>
    <Name>Xfce</Name>
    <AppDir>/usr/share/slinux-style/applications</AppDir>

    ...

    <MergeFile>applications-menueditor.menu</MergeFile>
    <MergeFile>xfce-applications-menueditor.menu</MergeFile>

</Menu>

Видимо специально сделали два MergeFile для таких как я :)
То есть создавать нужно либо-либо и тогда всё норм.

Как я думаю, мой .menu отрабатывает первым, а поверх него накладывается 50-xfce... и поэтому так получается. Но опять же, я пробовал создавать 70, 80 и 90-xfce... и всё равно также криво было. Хотя если вручную файл такой создать, то всё норм.
В итоге так и не понял прикола...
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #20 : 05.10.2015 09:33:58 »
Видимо специально сделали два MergeFile для таких как я :)
Да что такое, всё равно на некоторых машинах первым подхватывается 50-xfce-applications.menu, а на некоторых наоборот -- xfce-applications-menueditor.menu ! И естественно меню искажается, если первым подхватывается xfce-applications-menueditor.menu.
Я просто не понимаю, как так-то...
Как правильно сделать-то ?..
Сноси Винду, переходи на Линукс ! :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 360
  • Учиться .... Телепатами не рождаются, ими ....
Re: Изменение меню в SL [решено]
« Ответ #21 : 05.10.2015 09:43:22 »
Может цифорки прибегать, типа 99 -..
Сортировка может по разному с буквами работать

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #22 : 05.10.2015 10:00:38 »
ruslandh
Цифорки пробовал уже https://forum.altlinux.org/index.php?topic=35372.msg265935#msg265935.
На разных машинах по-разному срабатывает, почему -- непонятно.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #23 : 05.10.2015 12:39:00 »
Так и не разобрался как происходит чтение этих проклятых .menu.
Но сделал по-другому, теперь везде работает.
Файл бросил сюда -- /etc/xdg/menus/xfce-applications-menueditor.menu:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>
    <Name>Xfce</Name>

    <MergeDir>xfce-applications-merged</MergeDir>

    <Menu>
        <Name>Accessories</Name>
        <Include>
          <Filename>kde4-k3b.desktop</Filename>
        </Include>
        <Exclude>
          <Filename>xfce4-clipman.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Multimedia</Name>
        <Exclude>
         <Filename>kde4-k3b.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Internet</Name>
        <Exclude>
         <Filename>remmina.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Office</Name>
        <Exclude>
         <Filename>kde4-okular.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Education</Name>
        <Exclude>
         <Filename>math.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>Graphics</Name>
        <Exclude>
         <Filename>draw.desktop</Filename>
        </Exclude>
    </Menu>

    <Menu>
        <Name>System</Name>
        <Exclude>
         <Filename>kde4-k3b.desktop</Filename>
         <Filename>Thunar.desktop</Filename>
         <Filename>xfce4-terminal.desktop</Filename>
        </Exclude>
    </Menu>

</Menu>

PS. Я вообще как понял, система читает всё что лежит тут:
$ ls /etc/xdg/menus/*.menuТам есть файл xfce-applications.menu (его содержимое очень похоже на /etc/xdg/menus/xfce-applications-merged/50-xfce-applications.menu.), в нём:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>
    <Name>Xfce</Name>

    ...

    <MergeDir>xfce-applications-merged</MergeDir>
    <MergeFile>applications-menueditor.menu</MergeFile>
    <MergeFile>xfce-applications-menueditor.menu</MergeFile>

</Menu>
См. <MergeDir>xfce-applications-merged</MergeDir>. Я так понимаю, система должна читать каталог и объединять все найденные там файлы .menu. НО, почему-то это объединение проходит криво. Не знаю, может я делаю неправильно, а может, это какая-то ошибка.
Вот так...
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #24 : 05.10.2015 12:42:01 »
В общем, кто разгадает эту цепочку чтения .menu пишите, мне будет интересно...
Сноси Винду, переходи на Линукс ! :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 360
  • Учиться .... Телепатами не рождаются, ими ....
Re: Изменение меню в SL [решено]
« Ответ #25 : 05.10.2015 13:51:11 »
Ну, теоретически они должны выполняться в порядке сортировки, для того и цифры приписываются вначале, но если в самом файле есть вызов merge чего-то, то встанет в то место, где был произведён вызов.

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #26 : 05.10.2015 15:07:45 »
ruslandh
То есть:
$ ls /etc/xdg/menus/xfce-applications-merged/
10-xfce-applications-menueditor.menu  50-xfce-applications.menu
$ cat /etc/xdg/menus/xfce-applications-merged/10-xfce-applications-menueditor.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
  "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>

    <MergeFile>50-xfce-applications.menu</MergeFile>

    ...

</Menu>
Сначала должен отработать 10, а потом 50 ?

Вообще может оно так и происходит, но визуальное отображение меню говорит иначе... ну я как бы не этого хочу, ни как я заказал.
Вот такие проблемы:
скрывается только из раздела Education -- math.desktop, из раздела Multimedia скрывается kde4-k3b.desktop, из раздела Office -- kde4-okular.desktop и ещё draw.desktop из Graphics
Если посмотреть 50-xfce... (который в SL используется), там есть Exclude/Include для некоторых разделов, а вот для разделов Education, Multimedia, Office и Graphics -- НЕТ.
Короче, мои Exclude не срабатывают для тех разделов, которые редактируются в 50-xfce...
« Последнее редактирование: 05.10.2015 15:13:18 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Изменение меню в SL [решено]
« Ответ #27 : 05.10.2015 17:51:43 »
Вот кстати спецификация по freedesktop http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html.
Но она на английском, к сожалению суть через переводчик уловить не могу...
Особенно это предложение:
<MergeDir>
Any number of <MergeDir> elements may be listed below a <Menu> element. A <MergeDir> contains the name of a directory. Each file in the given directory which ends in the ".menu" extension should be merged in the same way that a <MergeFile> would be. If the filename given as a <MergeDir> is not an absolute path, it should be located relative to the location of the menu file being parsed. The files inside the merged directory are not merged in any specified order.

Duplicate <MergeDir> elements (that specify the same directory) are handled as with duplicate <AppDir> elements (the last duplicate is used).
Получается как бы мои Exclude перекрывает 50-xfce...
Сноси Винду, переходи на Линукс ! :)