Sie können, aber Sie müssen eine gepatchte libnotify verwenden, um dies zu tun
notify-send
kann vorhandene Benachrichtigungen nicht ersetzen, bevor sie abgelaufen sind (oder verschwunden sind). Dies ist ein bekannter Fehler . Ein Kommentator des Fehlerberichts hat jedoch einen Patch veröffentlicht , um diesen Fehler zu beheben.
Installation des gepatchten libnotify-bin von PPA
Ich habe eine gepatchte Version des libnotify-bin- Pakets erstellt, die das Ersetzen in meinem PPA ermöglicht. Momentan ist es nur für Ubuntu 12.04, aber wenn Sie es für ein anderes aktuell unterstütztes Release benötigen, posten Sie bitte einen Kommentar und ich werde mein Bestes geben, um es verfügbar zu machen.
Öffnen Sie zum Installieren ein Terminal und:
sudo apt-add-repository ppa: izx / askubuntu
sudo apt-get update
sudo apt-get installiere libnotify-bin
Verwendung der Ersatzfunktionen
Das Patch notify-send
enthält zwei neue Schalter -p
(oder --print-id ) und -r
(oder --replace-id ). Das --help
beschreibt sie als:
-p, --print-id Gibt die Benachrichtigungs-ID aus.
-r, --replace-id = REPLACE_ID Die ID der zu ersetzenden Benachrichtigung.
- Mit
-p
wird jeweils notify-send
eine ID N (Zahl / Ganzzahl) zurückgegeben.
- Wenn Sie ein anderes
notify-send
mit ausstellen, -r N
wird die vorherige Benachrichtigung sofort ersetzt .
Zum Beispiel können Sie für bash die ID von notify-send -p ...
mit speichern :
NID=$(notify-send -p "MESSAGE-1")
und dann ersetzen durch:
notify-send -r $NID "MESSAGE-2"
Sie können sowohl -p als auch -r in einem Skript rekursiv verwenden , solange die Variable -r zu Beginn auf 0 initialisiert ist.
Hier ist ein einfaches Skript, das Benachrichtigungen im Abstand von einer halben Sekunde von 0 bis 100 anzeigt:
#! / bin / bash
NID = 0
für i in {0..100..10}
machen
NID = $ (benachrichtigen-senden -p -r $ NID $ i)
schlaf 0,5
getan
Sie können den "synchronen" Hinweis verwenden, um eine "Bestätigungsbenachrichtigung" zu erstellen, die frühere Bestätigungsbenachrichtigungen ersetzt. Beispielsweise:
Der Hinweis "x-canonical-private-synchronous" wird in diesem Dokument angegeben . Verwenden Sie, um einen Hinweis anzugeben
-h type:name:value
. Der Typ hier iststring
, name istx-canonical-private-synchronous
, und es scheint, dass der Wert beliebig sein kann.Wenn also Ihre erste Benachrichtigung mit diesem Hinweis erstellt wird und auch die zweite Benachrichtigung , wird die zweite sofort die erste ersetzen. (Siehe Animationen und Dauern in der Dokumentation in der Spalte "Bestätigungsblasen".)
quelle
string:x-canonical-private-synchronous:anything
war genau das, was ich brauchte. Danke für diese Antwort. Auch zum Verlinken auf die DokumentationX-ref:
Wie kann man eine neue Benachrichtigung in notify-osd erzwingen, ohne darauf zu warten, dass die frühere beendet wird?
auf patches kann man einfach verzichten
Lesezeichen:
Wie verwende ich "Benachrichtigung senden", um eine vorhandene Benachrichtigung sofort zu ersetzen?
Sendet einen Fehler. Notify-osd (2592): Vorgang nicht zulässig. Was bedeutet das?
Dies kann bedeuten, dass die Berechtigungen unzureichend sind und Folgendes erfordern:
quelle
notify-osd(2592): Operation not permitted
. Was bedeutet das?Ich habe ein einfaches Python-Skript erstellt, das fast genauso funktioniert wie notify-send, aber Unterstützung bietet
--replaces-id
.notify-send.py
Web: https://github.com/phuhl/notify-send.py
Ein Python-Skript zum Senden von Desktop-Benachrichtigungen über die Shell.
Über
Libnotify ist Teil vieler Skripte in der Linux-Welt. Es nutzt viele der in der Desktop Notifications-Spezifikation angegebenen Funktionen und macht sie für Shell-Skripte zugänglich. Es ist jedoch nicht möglich, eine vorhandene Benachrichtigung durch die zu ersetzen
replaces-id
. Dies ist ein bekannter Fehler seit 2008 und hat einen Patch seit 2012. Der Patch ist allerdings noch nicht upstream (2018).Dieses Python-Skript verwendet notify2 Paket und stellt die Funktionalität der Shell zur Verfügung.
Unterschiede zwischen notify-send.py und notify-send
notify-send.py -h
shows help ist nicht der Parameter für Hinweise. Für Hinweise verwenden--hint
.notify-send.py -r ID
undnotify-send.py --replaces-id ID
existiert. Um eine Benachrichtigung zu ersetzen, rufen Sienotify-send.py
mit der ID an, die von der zu ersetzenden Benachrichtigung zurückgegeben wurde.notify-send.py
Gibt die ID der neu erstellten Benachrichtigung zurück.notify-send.py --replaces-process NAME
existiert. Jede Benachrichtigung, die mit demselben NAMEN erstellt wird, ersetzt jede Benachrichtigung davor mit demselben NAMEN. Wenn der Aufruf mit diesem Parameternotify-send.py
blockiert, ist es am besten, ihn mit einem Trailing aufzurufen&
.Installation
Benötigt python3.
Verwendung
notify-send [.py] als root-Benutzer
Um Benachrichtigungen anzuzeigen, auch wenn libnotify oder
wird vom root-Benutzer verwendet, sind diese beiden Skripte hilfreich.
Mit
notify-send.sh
so etwas:Siehe auch
Schauen Sie sich auch meinen Benachrichtigungs-Daemon an, der von Dunst inspiriert ist , aber einige Verbesserungen aufweist, einschließlich der Möglichkeit eines transparenten Hintergrunds und eines Benachrichtigungszentrums, in dem Benachrichtigungen gespeichert werden.
quelle