Możesz, ale musisz użyć łatki libnotify, aby to zrobić
notify-send
nie ma możliwości zastąpienia istniejących powiadomień przed upłynięciem limitu czasu (lub zniknięciem). To znany błąd . Jednak komentator raportu o błędzie opublikował łatkę, aby to naprawić.
Instalowanie łatanego libnotify-bin z PPA
Utworzyłem łataną wersję pakietu libnotify-bin , która umożliwia zastępowanie w moim PPA. Obecnie jest to tylko Ubuntu 12.04, ale jeśli potrzebujesz go do innej obecnie obsługiwanej wersji, napisz komentarz, a ja postaram się go udostępnić.
Aby zainstalować, otwórz terminal i:
sudo apt-add-repository ppa: izx / askubuntu
sudo apt-get update
sudo apt-get install libnotify-bin
Jak korzystać z możliwości wymiany
Naprawione notify-send
zawiera nowe przełączniki -p
(lub --print-id ) i -r
(lub --replace-id ). --help
Opisuje je jako:
-p, --print-id Wydrukuj identyfikator powiadomienia.
-r, --replace-id = REPLACE_ID Identyfikator powiadomienia do zastąpienia.
- Z
-p
, każdy notify-send
zwróci ID N (liczba / liczba całkowita).
- Wydając kolejny
notify-send
z -r N
zastąpi poprzednie zgłoszenie natychmiast .
Na przykład, dla bash, możesz zapisać identyfikator za notify-send -p ...
pomocą:
NID=$(notify-send -p "MESSAGE-1")
a następnie zamień na:
notify-send -r $NID "MESSAGE-2"
W skrypcie można rekurencyjnie używać zarówno -p, jak i -r , o ile zmienna -r jest na początku inicjalizowana na 0.
Oto prosty skrypt, który pokazuje powiadomienia liczące od 0 do 100 w odstępach półsekundowych:
#! / bin / bash
NID = 0
dla i w {0..100..10}
robić
NID = $ (powiadom-wyślij -p -r $ NID $ i)
spać 0,5
gotowy
Możesz użyć wskazówki „synchronicznej”, aby utworzyć powiadomienie „potwierdzające”, które zastąpi poprzednie powiadomienia potwierdzające. Na przykład:
Wskazówka „x-kanoniczna-prywatna-synchroniczna” podana jest w tym dokumencie . Aby określić podpowiedź, użyj
-h type:name:value
. Wpisz tutajstring
, nazwa tox-canonical-private-synchronous
i wydaje się, że wartość może być dowolna.Więc jeśli twoje pierwsze powiadomienie zostanie utworzone z tą wskazówką, a drugie też, to drugie natychmiast zastąpi pierwsze. (Zobacz Animacje i czasy trwania w dokumentacji, w kolumnie dla „bąbelków potwierdzających”).
źródło
string:x-canonical-private-synchronous:anything
było dokładnie tym, czego potrzebowałem. Dziękuję za tę odpowiedź. Również za linkowanie do dokumentacjiX-ref:
Jak wymusić pojawienie się nowego powiadomienia w powiadomieniu-osd bez oczekiwania na zakończenie wcześniejszego?
bez łatek możesz po prostu zrobić
Zakładka:
Jak użyć „powiadom-wyślij”, aby natychmiast zastąpić istniejące powiadomienie?
Wysyła błąd powiadomienie-osd (2592): Operacja niedozwolona. Co to znaczy?
Może to oznaczać, że przywileje są nieodpowiednie i wymagają:
źródło
notify-osd(2592): Operation not permitted
. Co to znaczy?Stworzyłem prosty skrypt Pythona, który działa prawie tak samo jak powiadomienie-wysyłanie, ale obsługuje
--replaces-id
.powiadomienie-wyślij.py
www: https://github.com/phuhl/notify-send.py
Skrypt Pythona do wysyłania powiadomień na pulpicie z powłoki.
O
Libnotify jest częścią wielu skryptów w świecie Linuksa. Wykorzystuje wiele określonych funkcji specyfikacji powiadomień na pulpicie i udostępnia je skryptom powłoki. To nie nie jednak pozwolić, aby zastąpić istniejący powiadomienia z
replaces-id
. Jest to znany bug od 2008 roku i ma łatę od 2012. Łatka nie jest jeszcze choć Upstream (2018).Ten skrypt Pythona wykorzystuje pakiet powiadomień2 i udostępnia funkcjonalność powłoce.
Różnice między powiadomieniem-wysłaniem.py i powiadomieniem-wysłaniem
notify-send.py -h
programach pomoc zamiast być parametrem podpowiedzi. Użyj podpowiedzi--hint
.notify-send.py -r ID
inotify-send.py --replaces-id ID
istnieje. Aby zastąpić powiadomienie połączeniemnotify-send.py
z identyfikatorem zwróconym przez powiadomienie, które ma zostać zastąpione.notify-send.py
zwraca identyfikator nowo utworzonego powiadomienia.notify-send.py --replaces-process NAME
istnieje. Każde powiadomienie, które zostanie utworzone przy użyciu tego samego NAZWY, zastąpi każde wcześniejsze powiadomienie tym samym NAZWĄ. Jeśli zostanie wywołany za pomocą tego parametru,notify-send.py
może zostać zablokowany, najlepiej wywołać go za pomocą znaku końca&
.Instalacja
Wymaga python3.
Stosowanie
powiadom-wyślij [.py] jako użytkownik root
Aby wyświetlać powiadomienia, nawet jeśli libnotify lub
jest używany przez użytkownika root, te dwa skrypty są pomocne.
W
notify-send.sh
ten sposób:Zobacz też
Spójrz także na mojego demona powiadomień zainspirowanego przez Dunsta , ale z kilkoma ulepszeniami, w tym możliwością przezroczystego tła i centrum powiadomień, które przechowuje powiadomienia.
źródło