Как заставить новое Уведомление в 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
На странице справки для уведомления-отправки я нашел --urgency=LEVEL или -u, где уровни низкие, нормальные, критические.
Это какая-то польза? сделать это критично?
Также я попробовал это с командой notify-send -u=critical"Testing"
но это не работает... это дает ошибку - Неизвестная срочность критического тестирования указан. Известные уровни срочности: низкий, нормальный, критический.
или если я дам команду notify-send -u=LOW"Testing"
это дает мне ошибку пропущенного аргумента для -u
Любое отношение??
Информация из комментариев,
по какой-то причине это работает странным образом! вместо диалогового окна "Запуск xampp.." и "Остановка xampp.." отображается диалоговое окно, а затем выводится уведомление "xampp начат" или "xampp остановлен"...:/ диалоговое окно справляется с кнопками ОК и Отмена!
3 ответа
Патч для этой ошибки можно найти по адресу: https://bugs.launchpad.net/ubuntu/+source/libnotify/+bug/257135?comments=all
@izx сделал ppa-версию для патча, поэтому установка теперь проста (спасибо izx!)- Как мне использовать "notify-send" для немедленной замены существующего уведомления?
Для установки откройте терминал и:
sudo apt-add-repository ppa: izx / askubuntu sudo apt-get update sudo apt-get установить 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
Редактировать Вот как это выглядит на моем...
Вы можете использовать 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()
X-исх:
Как я могу использовать "уведомить-отправить", чтобы немедленно заменить существующее уведомление?
без патчей можно просто обойтись
#!/bin/bash
for i in {0..100..10}
do
killall notify-osd
notify-send "testing" $i
sleep 0.5
done
закладки:
Как заставить новое Уведомление в notify-osd появляться, не дожидаясь выхода предыдущего?
Как я могу использовать "уведомить-отправить", чтобы немедленно заменить существующее уведомление?