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

Автор Тема: Обновление меню после подключения модуля.pfs (Whisker Menu). fixmenus  (Прочитано 362 раз)

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

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 926
  • Репутация: +24/-0
  • Автор темы
В скрипте Mod-Man я использовал для обновления пунктов  Whisker Menu после подключения модулей рестарт всей панели. Для этого использовал команду
Код
xfce4-panel -r
но на работе машинка старая, мало памяти(4гиг) ,и когда я подключаю модули то в причину выше упомянутой команды , изредка рестарт панели сбоит , и я остаюсь без панели. ...перезагрузка помогает её вернуть но такое поведение панели при рестарте мягко говоря пугает. Я решил попробовать не обновлять всю панель, а только Whisker Menu. Но толкового способа для "мягкого " обновления пунктов меню не нашел, но... нашел весьма костыльный но интересный способ.
Я делаю
Код
pkill whisker
и так как в коде панели вероятно ,судя по поведению , есть механизм который следит за падением элементов панели, и тут же Whisker Menu возобновляет свою работу считывая при этом обновленые пункты меню. (что и требовалось)
Пишу про это чтоб поделится находкой ,ибо это весьма востребованный сценарий, и в надежде что кто то подскажет более правильный и надежный способ.
« Последнее редактирование: 02 Июль 2024, 16:05:59 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34089
  • Репутация: +233/-0
    • PuppyRus-A
Re: Вопрос по Whisker Menu.
« Ответ #1 : 02 Июль 2024, 12:33:23 »
xfce4-panel -r
Надо это делать с сохранением переменных окружения. См. мой скрипт fixmenus

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 926
  • Репутация: +24/-0
  • Автор темы
Re: Вопрос по Whisker Menu.
« Ответ #2 : 02 Июль 2024, 15:27:10 »
Надо это делать с сохранением переменных окружения
если вас не затруднит, объясните пожалуйста почему нужно перезапускать всю панель?
хотя вы не утверждали этого, вы просто заметили мне чтоб правильно делать xfce4-panel -r нужно с сохранением переменных окружения и их последующей загрузки, я понял sfs спасибо!
« Последнее редактирование: 02 Июль 2024, 15:39:29 от totiks2012 »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34089
  • Репутация: +233/-0
    • PuppyRus-A
Re: Вопрос по Whisker Menu.
« Ответ #3 : 02 Июль 2024, 16:04:29 »
почему нужно перезапускать всю панель?
Потому, что мне неизвестны предусмотренные авторами варианты перезапуска только меню.
Там хитро делается - смотрите скрипт
« Последнее редактирование: 02 Июль 2024, 16:06:48 от sfs »

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 926
  • Репутация: +24/-0
  • Автор темы
Потому, что мне неизвестны предусмотренные авторами варианты перезапуска только меню.
Там хитро делается - смотрите скрипт
нашел , спасибо!

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34089
  • Репутация: +233/-0
    • PuppyRus-A
Мой скрипт помог?

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 926
  • Репутация: +24/-0
  • Автор темы
Мой скрипт помог?
скорее совет, скрипт не смотрел
но сделал вот так
Код
# Сохраните текущие переменные окружения
            env > /tmp/env_backup

            # Перезапустите панель XFCE
            xfce4-panel -r

            # Загрузите сохраненные переменные окружения
            set -a
            source /tmp/env_backup
            set +a

upd: fixmenus из lfd10-22.04 смотрел но там просто перезапуск панели без сохраненя и востановления переменых окружения,
Код
#!/bin/ash
#180929b sfs
rm "/home/`sfsusr`/.cache/menus/"* 2>/dev/null
killall menu-cached 2>/dev/null && exit


if [ "`pidof mate-panel`" ];then         
    sfs-testrun xxkb
        sudo -u "`sfsusr`" mate-panel --replace &
    sfs-testrun xxkb
elif [ "`pidof vala-panel`" ];then
    sudo -u "`sfsusr`" vala-panel -c restart &
elif [ "`pidof jwm`" ];then
    pidof menu-dmn || menu-dmn start &
elif [ "`pidof xfce-panel`" ];then
    sudo -u $(sfsusr) sh -c "
       $(ps -C xfdesktop ewwww --no-headers \
         |sed -n 's/^.* \(xfdesktop\) \(.*\)$/\2 \1 -R/p')
       $(ps -C xfce4-panel ewwww --no-headers \
         |sed -n 's/^.* \(xfce4-panel\) \(.*\)$/\2 \1 -r/p')"
fi
но всё равно,я  пока в тесте со своим скриптом,буду следить как будет работать используя сохраненные переменные окружения, так что за совет и толковую правильную идею спасибо.
« Последнее редактирование: 03 Июль 2024, 10:56:48 от totiks2012 »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34089
  • Репутация: +233/-0
    • PuppyRus-A
там просто перезапуск панели без сохраненя и востановления переменых окружения
Нет . Тут хитрая конструкция с sh -c и ps -C
В итоге стало хорошо?
« Последнее редактирование: 03 Июль 2024, 12:55:44 от sfs »

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 926
  • Репутация: +24/-0
  • Автор темы
В итоге стало хорошо?
этот способ вроде сработал.

# Сохраните текущие переменные окружения
            env > /tmp/env_backup

            # Перезапустите панель XFCE
            xfce4-panel -r

            # Загрузите сохраненные переменные окружения
            set -a
            source /tmp/env_backup
            set +a
пока наблюдаю за ним, если не выйдет в бока то оставлю в своём коде, по окончанию теста обновлю скрипт Mod_Man и опубликую.
-------------------------------------------------------
upd: инициировал искусственную нагрузку на комп(загрузку более 20вкладок в браузере), обычно сбой перезапуска панели происходил во время нагрузки, и запустил скрипт с этим кодом, вроде отработал без сбоев. далее буду смотреть
« Последнее редактирование: 03 Июль 2024, 14:38:23 от totiks2012 »