Сайт | Скачать | Видео | Wiki

Автор Тема: openbox-menu -f jwm  (Прочитано 33929 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн geekless

  • Старожил
  • ****
  • Сообщений: 240
  • Репутация: +8/-0
  • Автор темы
openbox-menu -f jwm
« : 18 Сентябрь 2013, 12:34:57 »
https://bitbucket.org/geekless/openbox-menu/

Добавил возможность генерировать меню для jwm (ключ -f jwm).
Добавил ключ -I для указания требуемого размера иконок.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34033
  • Репутация: +231/-0
    • PuppyRus-A
openbox-menu -f jwm
« Ответ #1 : 18 Сентябрь 2013, 14:28:45 »
Пересобрал http://forum.puppyrus.org/index.php/topic,14675.msg80756.html#msg80756
Опробовал -f jwm
C http://forum.puppyrus.org/index.php/topic,14267.msg77065.html#msg77065 , переименованным в applications.menu (вроде мы это обсуждали - что-то не нашел где)
Получил нерабочее меню. Не хватaет
Код
# diff 1 2
2a3
<RootMenu label="Меню" labeled="false" height="24" onroot="3">
115a117,118
</RootMenu>

Оффлайн geekless

  • Старожил
  • ****
  • Сообщений: 240
  • Репутация: +8/-0
  • Автор темы
openbox-menu -f jwm
« Ответ #2 : 18 Сентябрь 2013, 14:31:27 »
Рабочее, если подключать через Include.
Код
<RootMenu height="32" onroot="12">
      <Include>exec:/media/stuff/data/Проекты/Личные/openbox-menu/openbox-menu -f jwm -I 32</Include>
</RootMenu>
« Последнее редактирование: 18 Сентябрь 2013, 15:56:50 от sfs »

Оффлайн RoDoN

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 6287
  • Репутация: +141/-0
Re:openbox-menu -f jwm
« Ответ #3 : 18 Сентябрь 2013, 16:27:23 »
Небольшое уточнение, надо обязательно указывать после openbox-menu какое *.menu использовать, напр., lxde-applications.menu и получится так:
Код
<RootMenu label="Меню" labeled="false" onroot="3">
      <Include>exec:/usr/bin/openbox-menu lxde-applications.menu -f jwm -I 24</Include>
</RootMenu>
Мой рабочий вариант .jwmrc:
Код
<?xml version="1.0"?>

<JWM>

<RootMenu label="Меню" labeled="false" onroot="3">
      <Include>exec:/usr/bin/openbox-menu lxde-applications.menu -f jwm -I 24</Include>
<Separator/>
<Program label="Справка" icon="help48.png">exec puppyhelp</Program>
<Menu label="Выключение" icon="shutdown48.png" height="16">
<Program label="Выключить компьютер" icon="shutdown48.png">sudo shutdown -h now</Program>
<Program label="Выход в консоль" icon="prompt16.xpm">restartcons</Program>
<Program label="Ждущий режим" icon="apm-online.xpm">sudo /etc/acpi/actions/suspend.sh</Program>
<Program label="Перезагрузить X сервер" icon="mini-windows.xpm">sudo killall X</Program>
<Program label="Перезагрузить компьютер" icon="mini-turn.xpm">sudo shutdown -r now</Program>
<Program label="Перезагрузка JWM" icon="jwm16.png">jwm-rst</Program>
</Menu>
</RootMenu>

<Group>
<Name>xmessage</Name>
<Option>notitle</Option>
<Option>nolist</Option>
</Group>

<Group>
<Class>gtkdialog-splash</Class>
<Option>nolist</Option>
<Option>nofocus</Option>
</Group>

<Include>$HOME/.jwmrc-tray</Include>

<IconPath>/usr/share/icons</IconPath>
<IconPath>/usr/share/pixmaps</IconPath>
<IconPath>/usr/local/share/pixmaps</IconPath>

<StartupCommand>exec $HOME/.jwm/startup</StartupCommand>

<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>
Дополнительно в систему надо добавить menu-cache-0.5.0-2-i686 (142 Кб) + openbox-menu (18 Кб), думаю, что это не очень большая цена за то, чтобы отказаться от костыля fixmenus !!!
Чтобы все работало надо еще удалить /usr/local/bin/jwm_menu_refresh.
geekless - СПАСИБО!!! +

З.Ы. Еще такое же сделать бы для меню IceWM и тогда вообще сказка!

З.Ы. Надо будет еще в lxde-applications.menu, а точнее надо будет новое jwm-applications.menu написать и туда добавить пункт выключения.
« Последнее редактирование: 18 Сентябрь 2013, 16:33:23 от RoDoN »
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн geekless

  • Старожил
  • ****
  • Сообщений: 240
  • Репутация: +8/-0
  • Автор темы
Re:openbox-menu -f jwm
« Ответ #4 : 18 Сентябрь 2013, 16:32:09 »
Небольшое уточнение, надо обязательно указывать после openbox-menu какое *.menu использовать
Вообще это не очень корректный способ.

Скрипт, который запускает графический сеанс, должен делать:
Код
export XDG_MENU_PREFIX=lxde-

В этом случае menu-cache будет по умолчанию открывать меню с соответствующим префиксом, т.к. lxde-applications.menu в данном случае. Данный способ указан в спецификации и должен поддерживаться всеми DE, т.е. распространяется не только на menu-cache, но и вообще на всё, начиная от XFCE и заканчивая KDE.

Оффлайн RoDoN

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 6287
  • Репутация: +141/-0
Re:openbox-menu -f jwm
« Ответ #5 : 18 Сентябрь 2013, 16:44:09 »
Добавил в .xinitrc строчку:
Код
export XDG_MENU_PREFIX=lxde-
а в .jwmrc убрал lxde-applications.menu - все работает! Отлично, т.е. в .xinitrc можно будет прописывать так:
Код
export XDG_MENU_PREFIX=$CURRENTWM-
и будет грузиться нужное меню для конкретного WM в случае, если они будут нужны разные.
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34033
  • Репутация: +231/-0
    • PuppyRus-A
Re:openbox-menu -f jwm
« Ответ #6 : 18 Сентябрь 2013, 16:44:40 »
Код
      <Include>exec:/usr/bin/openbox-menu lxde-applications.menu -f jwm -I 24</Include>
Так работает. И это то же самое, что в моем 2м посте темы, но я переименовывал lxde-applications.menu
Таким же образом можно вставить и  jwm-xdgmenu (немного пошаманив)
Но проблема в другом: jwm читает свой конфиг при старте. Меню в конфиге. Передернуть меню можно только командой jwm -reload. При нажатии кнопки "меню" ничего не передергивается...
Тут или патчить jwm или приделывать костыли:
1. Вместо меню - кнопка запуска скрипта : jwm -reload && xdotool key Alt+space
2. Вместо меню - кнопка запуска PupMenu (такой костыль вообще не связан с openbox-menu и jwm-xdgmenu)
« Последнее редактирование: 18 Сентябрь 2013, 16:48:25 от sfs »

Оффлайн geekless

  • Старожил
  • ****
  • Сообщений: 240
  • Репутация: +8/-0
  • Автор темы
Re:openbox-menu -f jwm
« Ответ #7 : 18 Сентябрь 2013, 16:49:52 »
Но проблема в другом: jwm читает свой конфиг при старте. Меню в конфиге. Передернуть меню можно только командой jwm -reload. При нажатии кнопки "меню" ничего не передергивается...
Что если добавить возможность запуска нужной команды при обновлении меню прямо в openbox-menu?

openbox-menu может работать в режиме демона. В этом случае он всегда знает, когда в меню добавились и удалились пункты. Можно на него возложить обязанность принуждать jwm к перечитыванию конфига.

Оффлайн RoDoN

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 6287
  • Репутация: +141/-0
Re:openbox-menu -f jwm
« Ответ #8 : 18 Сентябрь 2013, 16:50:23 »
Еще при использовании openbox-menu -f jwm исчезает проблема с расширением файлов иконок.
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34033
  • Репутация: +231/-0
    • PuppyRus-A
Re:openbox-menu -f jwm
« Ответ #9 : 18 Сентябрь 2013, 16:56:20 »
Что если добавить возможность запуска нужной команды при обновлении меню прямо в openbox-menu?
Это ничего не даст, т.к. jwm перечитает конфиг только прямой командой jwm -reload (restart)
openbox-menu может работать в режиме демона. В этом случае он всегда знает, когда в меню добавились и удалились пункты. Можно на него возложить обязанность принуждать jwm к перечитыванию конфига.
Вот это интереснее, но лучше бы заставить jwm перечитывать при нажатии кнопки меню, а то сейчас обвешаем демонами - получится тяжелее KDE  ;)

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34033
  • Репутация: +231/-0
    • PuppyRus-A
Re:openbox-menu -f jwm
« Ответ #10 : 18 Сентябрь 2013, 17:03:38 »
Еще при использовании openbox-menu -f jwm исчезает проблема с расширением файлов иконок.
Вот это уже конкретный шаг в сторону совместимости
openbox-menu может работать в режиме демона.
А как? openbox-menu -h - не прояснил...
Кстати - он похоже связан с ~/.cache/menus - по какому событию там обновляется и как?
Помню, имел проблемы с lxpanel. Приходилось сносить ~/.cache/menus - иначе меню lxpanel не обновлялось...

Оффлайн RoDoN

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 6287
  • Репутация: +141/-0
Re:openbox-menu -f jwm
« Ответ #11 : 18 Сентябрь 2013, 17:12:13 »
Подключил-отключил пару *.pfs и теперь меню пустое  :(
В терминале пишет:
Код
live@pra:~$ openbox-menu

** (openbox-menu:17304): WARNING **: Cannot get menu root dir

** (openbox-menu:17304): WARNING **: Cannot create menu, check if the .menu file is correct
<openbox_pipe_menu xmlns="http://openbox.org/"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://openbox.org/  file:///usr/share/openbox/menu.xsd">
<item label="Cannot get menu root dir"></item>
<item label="Cannot create menu, check if the .menu file is correct"></item>
</openbox_pipe_menu>
live@pra:~$
или так:
Код
live@pra:~$ openbox-menu lxde-applications.menu

** (openbox-menu:17977): WARNING **: Cannot get menu root dir

** (openbox-menu:17977): WARNING **: Cannot create menu, check if the .menu file is correct
<openbox_pipe_menu xmlns="http://openbox.org/"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://openbox.org/  file:///usr/share/openbox/menu.xsd">
<item label="Cannot get menu root dir"></item>
<item label="Cannot create menu, check if the .menu file is correct"></item>
</openbox_pipe_menu>
live@pra:~$
Файлы все на месте, в ~/.cache/menus - пусто!
Куда посмотреть, где копать?
Если в терминале дать команду: sudo openbox-menu lxde-applications.menu, то вываливается сначала куча таких строк:
Код
(openbox-menu:19285): Gtk-CRITICAL **: IA__gtk_icon_info_get_filename: assertion `icon_info != NULL' failed

(openbox-menu:19285): Gtk-CRITICAL **: IA__gtk_icon_info_free: assertion `icon_info != NULL' failed
а потом идут нормальные правильные строки... не пойму что у меня могло сломаться?

« Последнее редактирование: 18 Сентябрь 2013, 17:17:09 от RoDoN »
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34033
  • Репутация: +231/-0
    • PuppyRus-A
Re:openbox-menu -f jwm
« Ответ #12 : 18 Сентябрь 2013, 17:33:14 »
в ~/.cache/menus - пусто!
Видимо , причина в этом. Как восстановить - я уже выше вопрос задал

Оффлайн geekless

  • Старожил
  • ****
  • Сообщений: 240
  • Репутация: +8/-0
  • Автор темы
Re:openbox-menu -f jwm
« Ответ #13 : 18 Сентябрь 2013, 17:42:58 »
В общем, под запуск демоном со спавном нужных команд при обновлении меню я утилиту сейчас допилил... (в битбакет еще не залил.) Но при использовании вылезла проблема иного рода. Баги в jwm, приводящие к сегфолту.

Заняться ими или ну его нафиг?

Оффлайн geekless

  • Старожил
  • ****
  • Сообщений: 240
  • Репутация: +8/-0
  • Автор темы
Re:openbox-menu -f jwm
« Ответ #14 : 18 Сентябрь 2013, 17:43:57 »
Подключил-отключил пару *.pfs и теперь меню пустое  :(
Список файлов этих *.pfs?