Вы можете, но вы должны использовать исправленный libnotify, чтобы сделать это
notify-send
не имеет возможности заменить существующие уведомления , прежде чем они таймаут (или пропали без вести). Это известная ошибка . Тем не менее, комментатор на сообщении об ошибке отправил патч , чтобы исправить это.
Установка пропатченного libnotify-bin из PPA
Я создал исправленную версию libnotify-бен пакет , который позволяет замену в моем PPA. В настоящее время это только для Ubuntu 12.04, но если вам это нужно для какого - либо другого в настоящее время поддерживается релиза, пожалуйста , напишите комментарий и я буду стараться изо все силами , чтобы сделать его доступным.
Для установки, откройте терминал и:
Sudo APT-адд-репозиторий PPA: izx / askubuntu
sudo apt-get update
sudo apt-get установить libnotify-bin
Как использовать возможности замены
Патч notify-send
включает в себя два новых ключа-p
(или --print-id ) и -r
(или --replace-id ). --help
Описывает их как:
-p, --print-идентификатор Печать ID уведомления.
-r, --replace-id = REPLACE_ID Идентификатор уведомления для замены.
- При этом
-p
каждый notify-send
вернет идентификатор N (число / целое число).
- Вызов другого
notify-send
с немедленно-r N
заменит предыдущее уведомление .
Например, для Баша, вы можете сохранить идентификатор из notify-send -p ...
с:
NID=$(notify-send -p "MESSAGE-1")
а затем заменить его:
notify-send -r $NID "MESSAGE-2"
Вы можете рекурсивно использовать как -p и -r в сценарии, до тех пор , как -r переменная инициализируется в 0 в начале.
Вот простой сценарий, который показывает уведомления отсчета от 0 до 100 в половинных-вторых интервалах:
#! / bin / Баш
NID = 0
для я в {} 0..100..10
делать
NID = $ (уведомительный отправить -p -r $ НИДЫ $ I)
спать 0,5
сделанный
Вы можете использовать «синхронный» намек создать «подтверждение» уведомление, которое заменит предыдущие уведомления о подтверждении. Например:
Подсказка "x-canonical-private-synchronous" указана в этом документе . Чтобы указать подсказку, используйте
-h type:name:value
. Тип здесьstring
, имяx-canonical-private-synchronous
, и кажется, что значение может быть любым, что вы хотите.Таким образом, если ваше первое уведомление создано с этой подсказкой, а второе также, второе немедленно заменит первое. (См Анимация и длительности в документации, в колонке «пузыри подтверждения».)
источник
string:x-canonical-private-synchronous:anything
было именно то, что мне было нужно. Спасибо за этот ответ. Также для подключения к документацииX-исх:
Как заставить новое уведомление в уведомляют-экранном , чтобы показать , не дожидаясь ранее одного до выхода?
без патчей вы можете просто сделать
Закладка:
Как использовать «уведомит-посыл» немедленно заменить существующее уведомление?
Отправляет ошибку notify-osd (2592): операция не разрешена. Что это значит?
Это может означать, что привилегии неадекватны требующие:
источник
notify-osd(2592): Operation not permitted
. Что это значит?Я создал простой скрипт на python, который работает почти так же, как notify-send, но имеет поддержку
--replaces-id
.notify-send.py
Интернет: https://github.com/phuhl/notify-send.py
Сценарий питон для отправки уведомлений рабочего стола из командной строки.
Около
Libnotify является частью многих сценариев в мире Linux. Она использует многие из указанных особенностей Desktop Notifications спецификации и делает их доступными для раковины-скриптов. Это не однако позволяет заменить существующее уведомление с
replaces-id
. Это известная ошибка с 2008 года и имеет участок с 2012 года Патч - прежнему не вверх по течению , хотя (2018 год).Этот скрипт на python использует пакет notify2 и предоставляет функциональность оболочке.
Различия между notify-send.py и уведомляют-посыла
notify-send.py -h
шоу поможет вместо того , чтобы параметр для подсказок. Применяется намеки--hint
.notify-send.py -r ID
иnotify-send.py --replaces-id ID
существует. Для того , чтобы заменить вызов уведомленияnotify-send.py
с идентификатором , который был возвращен в уведомлении должен быть заменен.notify-send.py
возвращается идентификатор вновь созданного уведомления.notify-send.py --replaces-process NAME
существует. Каждое уведомление, созданное с тем же ИМЯ, заменит каждое уведомление перед тем же ИМЯ. При вызове с этим параметромnotify-send.py
может блок, лучше называть с завершающим&
.Установка
Требуется python3.
использование
извещать-посыл [.py] как суперпользователь
Для отображения уведомлений, даже если libnotify или
используется от пользователя корня эти два сценария являются полезными.
С
notify-send.sh
следующим образом:Смотрите также
Также обратите внимание на моем уведомление-демоне , вдохновленный Данст , но с некоторыми улучшениями, в том числе возможности прозрачного фона и уведомление центра , который хранит уведомления.
источник