Как заставить новое Уведомление в notify-osd появляться, не дожидаясь выхода предыдущего?

Я создал скрипт (и ярлык .desktop, ведущий к этому скрипту) для запуска и остановки xampp ...

Он проверяет состояние xampp и, соответственно, запускает или останавливает xampp.

Теперь я назначил уведомление, как только скрипт запускается для отображения «Запуск xampp ...» или «Остановка xampp ...», а затем, когда xampp запускается или останавливается, он отображает «Xampp начался ...» «или« Xampp остановлен ... »

Я использовал notify-send для отображения уведомления, как показано в скрипте ниже

Теперь дело в том, что здесь, второе уведомление ожидает исчезновения первого сообщения, а затем всплывает, даже если xampp запущен / остановлен.

Я хочу, чтобы новое уведомление появилось немедленно, заставив предыдущее выйти до завершения его жизненного цикла.

Видно, что это происходит при немедленной активации / деактивации беспроводной сети / сети ...

Например, «Включено беспроводное соединение» появляется при выборе «Включить беспроводное соединение», и если вы сразу же выбираете «Отключить беспроводное соединение», уведомление «Беспроводное соединение отключено» появляется без ожидания завершения уведомления «Беспроводное соединение включено».

Так как мне этого добиться?

#!/bin/sh

SERVICE='proftpd'

if ps ax | grep -v grep | grep $SERVICE > /dev/null

then

notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Stopping XAMPP..." && 
gksudo /opt/lampp/lampp stop && notify-send -i /opt/lampp/htdocs/xampp/img/logo-
small.gif "XAMPP Stoped."

else

notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Starting XAMPP..." && gksudo /opt/lampp/lampp start && notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Started."

fi

На странице man для уведомления-отправки я нашел - срочность = УРОВЕНЬ [ 115] или -u , где уровни низкие, нормальные, критические.

Это какая-то польза? сделать его критичным?

Также я попробовал это с командой- notify-send -u=critical"Testing", но эта работа не работает ... она выдает ошибку- Неизвестная срочность критического заданного тестирования. Известные уровни срочности: низкий, нормальный, критический.

или, если я даю команду notify-send -u=LOW"Testing", выдается ошибка , отсутствует аргумент -u

Любое отношение ??

Информация из комментариев,

по какой-то причине это работает странным образом! вместо диалогового окна «Запуск xampp ..» и «Остановка xampp ..» отображается диалоговое окно, а затем выводится уведомление «xampp начат» или «xampp остановлен» ...: / диалоговое окно справляется с кнопками ОК и Отмена!

enter image description here

4
задан 5 October 2012 в 06:01

3 ответа

Вы можете использовать notify_notification_update, а затем notify_notification_show, чтобы обновить существующее уведомление.

Вот пример с Python и PyGObject:

from time import sleep
from gi.repository import Notify

Notify.init(app_name = 'notification-update-example')
notification = Notify.Notification.new("Notification", "Original message", None)
notification.show()
sleep(3)
notification.update("More notification", "Updated message", None)
notification.show()
0
ответ дан 5 October 2012 в 06:01

Патч для этой ошибки находится по адресу - https://bugs.launchpad.net/ubuntu/+source/libnotify/+bug/257135?comments=all

@ izx сделал ppa-версию для патча, поэтому установка теперь проста (спасибо izx!) - Как использовать «уведомить-отправить», чтобы немедленно заменить существующее уведомление?

[ 1112] Чтобы установить, откройте терминал и:

sudo apt-add-repository ppa:izx/askubuntu
sudo apt-get update
sudo apt-get install libnotify-bin

Теперь вы должны были установить исправленную версию notify-send, которая теперь может заменять и печатать номера идентификаторов, так что вы можете использовать только один окно уведомления для вашего сценария оболочки. Теперь в программе есть опции -p и -r или длинный синтаксис: --print-id и --replace-id


. Я написал скрипт на основе вашего оригинала, который будет использовать это, уведомления о запуске и остановке отображаются до тех пор, пока не отобразится остановлено и запущено, и он использует одно и то же окно уведомлений, если вы установили исправленную версию, создайте файл с именем config.txt и поместите число 0 внутрь, затем поместите этот файл в тот же папка как ваш файл lampp.sh.

#!/bin/sh

SERVICE='proftpd'

if ps ax | grep -v grep | grep $SERVICE > /dev/null

then
notify-send -t 0 -p -r `cat config.txt` -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Stopping XAMPP ..." >config.txt && gksudo /opt/lampp/lampp stop && notify-send -r `cat config.txt` -t 5000 -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Stoped."  
else
notify-send -t 0 -p -r `cat config.txt` -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Starting XAMPP ..." >config.txt && gksudo /opt/lampp/lampp start && notify-send -r `cat config.txt` -t 5000 -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Started."

fi

Редактировать Вот как это показано на моем ... enter image description here

0
ответ дан 5 October 2012 в 06:01

Другие вопросы по тегам:

Похожие вопросы: