В JWM начиная с версии 2.3.1 появилась в меню функция
Dynamic:
Dynamic
Include the contents of a file or the output of a program as a submenu. The file (or program output) must start with a JWM tag containing one or more items to be contained within the submenu. A file is specified by the text of the tag. If the text starts with exec: then the output of the specified executable is used. Note that the program or file will be read every time the menu is shown. To include menu items at the same level or to statically include the menu items when the configuration file is parsed, use the Include tag. This tag supports the same attributes as the Menu tag. (new as of JWM v2.3.1).
что дает возможность встраивать в меню вывод какой-то программы или содержимое какого-то файла, главное чтобы эта информация имела структуру меню и была обрамлена тегами JWM. В случае использования информации из файла получаем практически аналог использования mjwm или
скрипта от дяди Шурика, т.е. в меню вместо:
<Include>$HOME/.jwmrc-mjwm</Include>
можно написать так:
<Dynamic label="Приложения" icon="/usr/share/xpupsay/cow_small.png">$HOME/.jwmrc-mjwm</Dynamic>
но чтобы меню было актуальным файлик .jwmrc-mjwm надо чем-то пересоздавать, а для этого нужен какой-то костыль типа fixmenu или menu-dmn.
Чтобы получить автообновляемое удаляем (переименовываем) menu-dmn, чтоб не висел в процессах, а в файле ~/.jwmrc пишем например так:
<Dynamic label="Приложения" icon="/usr/share/xpupsay/cow_small.png">exec: jwm_xdgmenu.sh</Dynamic>
и создаем скрипт /usr/local/bin/jwm_xdgmenu.sh такого содержания:
#!/bin/sh
echo "<?xml version="1.0"?>
<JWM>"
jwm-xdgmenu2 -m 18 /etc/xdg/menus/applications.menu |tail -n+2 |head -n-1
echo "</JWM>"
В результате имеем следующее:
Осталось для полного счастья исправить все десктоп-файлы, где нет расширения у значков
Если в скрипте /usr/local/bin/jwm_xdgmenu.sh написать так:
#!/bin/sh
echo "<?xml version="1.0"?>
<JWM>"
jwm-xdgmenu2 -m 18 /etc/xdg/menus/applications.menu |tail -n+2 |head -n-1 |sed 's/.[pxs][npv][gm]//'
echo "</JWM>"
то получим меню без значков
Полный текст моего файла .jwmrc:
<?xml version="1.0"?>
<JWM>
<RootMenu label="Меню" labeled="false" height="24" onroot="3">
<Program label="Центр управления" icon="x48.png">exec menu-cc</Program>
<Separator/>
<Dynamic label="Приложения" icon="/usr/share/xpupsay/cow_small.png">exec: jwm_xdgmenu.sh</Dynamic>
<Separator/> <Program label="Справка" icon="help48.png">exec puppyhelp</Program>
<Program label="Выключение" icon="shutdown48.png">exec sfs-shutdown</Program>
</RootMenu>
<Group>
<Class>Gaim</Class>
<Option>sticky</Option>
</Group>
<Group>
<Name>xmessage</Name>
<!-- <Option>icon:info16.xpm</Option> -->
<Option>notitle</Option>
<Option>nolist</Option>
</Group>
<Group>
<Class>gtkdialog-splash</Class>
<Option>nolist</Option>
<!-- <Option>layer:9</Option> -->
<Option>nofocus</Option>
</Group>
<!-- Additional tray attributes: autohide, width, border, layer, layout -->
<!-- Tray definition moved to separate file: .jwmrc-tray -->
<Include>$HOME/.jwmrc-tray</Include>
<!-- <Icons> -->
<!-- <IconPath>$HOME/.icons</IconPath> -->
<IconPath>/usr/share/icons</IconPath>
<IconPath>/usr/share/pixmaps</IconPath>
<IconPath>/usr/local/share/pixmaps</IconPath>
<!-- </Icons> -->
<StartupCommand>exec $HOME/.jwm/startup</StartupCommand>
<!-- <Include>$HOME/.jwm/themes/jwm-default</Include> -->
<Include>$HOME/.jwm/jwmrc-bar</Include>
<Include>$HOME/.jwm/jwmrc-menu-0</Include>
<Include>$HOME/.jwm/jwmrc-menu-2</Include>
<Include>$HOME/.jwm/jwmrc-theme</Include>
<Include>$HOME/.jwm/jwmrc-personal</Include>
</JWM>
З.Ы. Надеюсь, что рассказал адекватно