Notifica-invio ignora il timeout?


47

Forse sto facendo qualcosa di sbagliato, ma non dovrebbero essere i comandi (eseguiti separatamente)

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

Hai timeout diversi? Il primo è quasi istantaneo, il secondo impiega 1 secondo e il terzo 100 secondi. In tutti i casi sembra richiedere circa sei secondi.

C'è un modo per aggirare il comportamento? Mentre gli sviluppatori lo etichettano come una "caratteristica" anziché un bug, vorrei alcune alternative ...


1
sì, lo ho confermato
Ringtail

Per me funziona come previsto usando XFCE4.
Grumbel

@BlueXrider vedi lo stesso mio problema? In tal caso, quale versione stai usando?
Agganciato l'

Ho confermato che il codice di test funziona correttamente. Ricevo i timeout come indicato.
Ringtail

6
In alternativa puoi usare notify-send "Text Here" ; sleep 3 ; killall notify-osd(dove sleep 3c'è un esempio di scadenza (in realtà uccisione) dopo 3 secondi)!
Pandya,

Risposte:


44

Questo è un bug noto: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(È considerata una "decisione di progettazione" dal manutentore.)


3
Questo non è davvero un bug. È una decisione di progettazione.
Eren Tantekin,

68
Una decisione di progettazione errata può essere un bug.
Boris Bukh,

24
Quando il software afferma di fare una cosa mentre fa un'altra, è un bug. Se gli sviluppatori non vogliono che lo consideriamo un bug, non pretendere che si comporti come non accade.
hytromo,

10
Questa non è una caratteristica. Questo è un bug! Quando si fornisce una leva per accendere i tergicristalli e non funziona, si rompe.
Matt H

3
@ChristopherDone Con rispetto, è un bug. La guida per notification-send (parte di notification-osd) dice: notification-send --help | grep timeout -t, --expire-time = TIME Specifica il timeout in millisecondi in cui scade la notifica. Questa è l'interfaccia principale per un utente dello strumento. L'interfaccia primaria risiede all'utente ed è quindi un bug. È un bug con il testo della guida o l'implementazione, a seconda della prospettiva, ma è sicuramente un bug.
Michael Sparks,

21

Come menzionato in uno dei post precedenti, esiste una decisione di progettazione per non consentire questa funzione. Fortunatamente per te, anche altre persone non sono d'accordo e hanno creato un PPA e puoi invertire questa decisione anche per il tuo sistema.

Per risolvere il tuo problema basta:

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

Opzionale

Per aggiungere ancora più funzionalità di invio-notifica di quelle attualmente disponibili:

Da Ubuntu 16.04 in poi:

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

Per le versioni 9.10-14.10:

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

Per ulteriori informazioni sulla soluzione sopra, leggi questo articolo:

Bolle di notifica configurabili per Ubuntu


Sfortunatamente, il repository non fornisce più il pacchetto, dicendo E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(relativo: askubuntu.com/questions/50/… )
phil294,

@ Blauhirn: non sono lo sviluppatore di detto pacchetto. Si prega di contattare lo sviluppatore
Fabby,

@ Blauhirn: risposta aggiornata dal 16.04 in poi
Fabby,

Questo ha funzionato! Tuttavia, come chiarimento per chiunque altro, è necessario installare anche la versione aggiornata di notify-osd. cioè 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 Grazie molto!
Michael Sparks,

1
@MichaelSparks è cambiato upgradein dist-upgrade. Ciò dovrebbe occuparsi delle cose, poiché notification-osd è già installato e dovrebbe essere aggiornato di sicuro.
Fabby,

4

Questa è stata una violazione intenzionalmente implementata delle convenzioni stabilite senza squalifica nell'ambiente del terminale host. vale a dire. notify-sendnon dovrebbe più esistere poiché compromette la funzionalità prevista e documentata ben consolidata, quindi notify-graffitiora dovrebbe esistere un nuovo comando - Cosa ???? Aspetta un secondo ... tutti quegli script che usano l'ortografia del nome del comando "convenzionale" saranno compromessi!?! cambiando la convenzione di come si scrive il nome del comando?!?! - hmmm Questa filosofia è eccezionalmente, paradossalmente ipocrita come sposata dall'interfaccia del terminale desktop Unity.

Non può essere fatto in entrambi i modi: preservare alcune convenzioni, ad es. il nome di un comando e non altri, la funzionalità di un comando come documentato. Se la funzionalità deve essere compromessa, allora anche il nome del comando dovrebbe mantenere integrità, convenzionalità, coerenza, ecc. Dell '"esperienza" dell'utente, oppure "frustrazione", "fastidio", "irritazione" dell'utente. ..

ref:

Segnalibro:
Notifica-invio ignora il timeout?


I collegamenti "Non expiring_notifications" e "Notification | Ubuntu App Developer" sono interrotti (o meglio la pagina web a cui si riferiscono è).
Keith Thompson,

2

Esiste un piccolo utile script notification-send.sh come sostituto drop-in per notifica-invio che consente di chiudere o sostituire le notifiche inviate in precedenza.

Modifica: come sottolineato da @Glutanimate, questo script supporta il tempo di scadenza per impostazione predefinita.

Alla fine non sono riuscito a far funzionare il tempo di scadenza, quindi ho optato per un modo bizzarro per inviare una notifica con un timeout di 2 secondi in questo modo:

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


Questa sceneggiatura è fantastica! Grazie per averlo condiviso qui. Sembra che ora sia completamente compatibile con gli argomenti CLI originali di notification-send. Vale a dire: è possibile inviare una notifica con un timeout di 2 secondi tramite notify-send.sh -t 2 "Hello World!". Ho ricollegato lo script alla mia directory $ PATH locale e l'ho rinominato in notifica-invio. Non dovrai più occuparti dell'implementazione di notifica-osd subpar!
Glutanimate,

Oh fantastico @Glutanimate! Grazie per averci fatto sapere.
NiMa gio

0

Per coloro che utilizzano l'ambiente desktop Cinnamon, esiste un'impostazione che può essere abilitata:

Notifiche> Rimuovi notifiche dopo aver raggiunto il timeout


0

Questo è in millisecondi. Ho provato su XUbuntu 16.04 (Ubuntu XFCE)

notify-send -t 3000 "test"

esattamente 3 secondi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.