Powiadomienie-wysyłanie ignoruje limit czasu?

47

Może robię coś złego, ale nie powinienem poleceń (uruchamiać osobno)

notify-send -t 1 "test"
notify-send -t 1000 "test"
notify-send -t 10000 "test"

Masz różne limity czasu? Pierwszy jest prawie natychmiastowy, drugi trwa 1 sekundę, a trzeci 100 sekund. We wszystkich przypadkach wydaje się, że zajmuje to około sześciu sekund.

Czy istnieje sposób na obejście zachowania? Ponieważ programiści określają to jako „funkcję” zamiast błędu, chciałbym kilka alternatyw ...

Haczykowaty
źródło
1
tak, potwierdziłem
Ringtail
Dla mnie działa zgodnie z oczekiwaniami przy użyciu XFCE4.
Grumbel,
@BlueXrider widzisz ten sam problem co ja? Jeśli tak, jakiej wersji używasz?
Hooked
Potwierdziłem, że kod testowy działa poprawnie. Dostaję przerwy zgodnie z zaleceniami.
Ringtail,
6
Alternatywnie możesz użyć notify-send "Text Here" ; sleep 3 ; killall notify-osd(gdzie sleep 3jest przykład wygaśnięcia (faktycznie zabijanie) po 3 sekundach)!
Pandya

Odpowiedzi:

44

Jest to znany błąd: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(Opiekun uważa to za „decyzję projektową”).

Boris Bukh
źródło
3
To nie jest tak naprawdę błąd. To decyzja projektowa.
Eren Tantekin
68
Zła decyzja projektowa może być błędem.
Boris Bukh
24
Gdy oprogramowanie twierdzi, że robi jedną rzecz, podczas gdy robi inną, jest to błąd. Jeśli programiści nie chcą, abyśmy uważali to za błąd, nie twierdzą, że działa tak, jak nie.
hytromo
10
To nie jest funkcja. To jest błąd! Jeśli podasz dźwignię, aby włączyć wycieraczki i nie działa, to jest zepsuta.
Matt H
3
@ChristopherDone Z szacunkiem, to błąd. Pomoc dotycząca powiadomienia-wysłania (część powiadomienia-osd) mówi: powiadomienie-wysłanie --help | grep timeout -t, --expire-time = CZAS Określa limit czasu w milisekundach, po upływie którego wygasa powiadomienie. To podstawowy interfejs użytkownika narzędzia. Ten podstawowy interfejs leży w gestii użytkownika i dlatego jest to błąd. To albo błąd w tekście pomocy, albo implementacja, w zależności od twojej perspektywy, ale to zdecydowanie błąd.
Michael Sparks
21

Jak wspomniano w jednym z powyższych postów, podjęto decyzję dotyczącą odrzucenia tej funkcji. Na szczęście dla Ciebie, inni ludzie również się nie zgadzają i utworzyli PPA i możesz cofnąć tę decyzję również dla swojego systemu.

Aby rozwiązać problem, po prostu:

sudo add-apt-repository ppa:leolik/leolik 
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install libnotify-bin
pkill notify-osd

Opcjonalny

Aby dodać jeszcze więcej funkcji wysyłania powiadomień niż obecnie:

Począwszy od wersji Ubuntu 16.04:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install notifyosdconfig

Dla wersji 9.10-14.10:

sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig
sudo apt-get update
sudo apt-get install notifyosdconfig

Aby uzyskać więcej informacji na temat powyższego rozwiązania, przeczytaj ten artykuł:

Konfigurowalne bąbelki powiadomień dla Ubuntu

Fabby
źródło
Niestety, repozytorium nie zapewnia już pakietu, mówiąc E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(powiązane: askubuntu.com/questions/50/… )
phil294
@Blauhirn: Nie jestem twórcą wspomnianego pakietu. Skontaktuj się z programistą
Fabby
@Blauhirn: zaktualizowano odpowiedź od 16.04
Fabby
To zadziałało! Jednak dla wyjaśnienia dla innych osób należy również zainstalować zaktualizowaną wersję powiadomienia-osd. tj sudo add-apt-repository ppa:leolik/leolik; sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig; sudo apt-get update; sudo apt install notify-osd # Updates to actually useful version; sudo apt install notifyosdconfig Wielkie dzięki!
Michael Sparks
1
@MichaelSparks zmieniono upgradena dist-upgrade. To powinno załatwić sprawę, ponieważ powiadomienie-osd jest już zainstalowane i na pewno powinno zostać zaktualizowane.
Fabby
4

Było to celowo wprowadzone naruszenie ustalonych konwencji bez dyskwalifikacji w środowisku terminalu hosta. to znaczy. notify-sendnie powinien już istnieć, ponieważ zagraża dobrze ustalonej oczekiwanej i udokumentowanej funkcjonalności, dlatego zamiast tego notify-graffitipowinno istnieć nowe polecenie - Co ???? Chwileczkę ... wszystkie skrypty, które używają „konwencjonalnej” pisowni nazw poleceń, zostaną naruszone!?! zmieniając konwencję pisowni nazwy polecenia?!?! - hmmm Ta filozofia jest wyjątkowo, paradoksalnie obłudna, jak to sugeruje interfejs terminalowy pulpitu Unity.

Nie można tego zrobić na dwa sposoby - zachowując niektóre konwencje, tj. nazwa polecenia, a jeszcze nie inne, funkcjonalność polecenia zgodnie z dokumentacją. Jeśli funkcjonalność ma zostać naruszona, to również nazwa polecenia powinna zachować integralność, konwencjonalność, spójność itp. „Wrażeń” użytkownika, czy też „frustracja”, „irytacja” użytkownika. ..

ref:

Zakładka:
Powiadom-wyślij ignoruje limit czasu?

George Rowell
źródło
Łącza „Nie wygasające_informacje” i „Powiadomienie | Ubuntu App Developer” są uszkodzone (a raczej strona internetowa, do której się odnoszą).
Keith Thompson,
2

Dostępny jest mały, przydatny skrypt skrypt-send.sh jako zastępczy zamiennik polecenia send-send, który umożliwia zamknięcie lub zastąpienie wcześniej wysłanych powiadomień.

Edycja: jak wskazał @Glutanimate, ten skrypt domyślnie obsługuje czas wygaśnięcia.

Nie mogłem w końcu uzyskać czasu wygaśnięcia do pracy, więc wybrałem dość pospieszny sposób wysłania powiadomienia z 2-sekundowym limitem czasu:

notify-send.sh --print-id test | xargs -I {} bash -c "sleep 2 && notify-send.sh --close={}" &

NiMa Thr
źródło
Ten skrypt jest świetny! Dziękujemy za udostępnienie go tutaj. Wygląda na to, że jest teraz całkowicie kompatybilny z oryginalnymi argumentami CLI powiadomienia-send. Tj .: możesz wysłać powiadomienie z 2-sekundowym limitem czasu za pośrednictwem notify-send.sh -t 2 "Hello World!". Symlinkowałem skrypt do mojego lokalnego katalogu $ PATH i przemianowałem go na powiadomienie-send. Nigdy więcej zajmowania się tym akapitem implementacji powiadomienia-osd!
Glutanimate,
Och fajnie @ Glutanimate! Dziękujemy za poinformowanie nas o tym.
NiMa Thr 10.04.18
0

Dla osób korzystających ze środowiska pulpitu Cinnamon istnieje ustawienie, które można włączyć:

Powiadomienia> Usuń powiadomienia po upływie limitu czasu

Shai Coleman
źródło
0

To jest w milisekundach. Testowałem na XUbuntu 16.04 (Ubuntu XFCE)

notify-send -t 3000 "test"

dokładnie 3 sekundy

Paweł Cioch
źródło