¿Notificar-enviar ignora el tiempo de espera?

47

Tal vez estoy haciendo algo mal, pero no deberían los comandos (se ejecutan por separado)

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

¿Tienes diferentes tiempos de espera? El primero es casi instantáneo, el segundo toma 1 segundo y el tercero 100 segundos. En todos los casos parece tomar unos seis segundos.

¿Hay alguna forma de evitar el comportamiento? Como los desarrolladores etiquetan esto como una "característica" en lugar de un error, me gustaría algunas alternativas ...

Enganchado
fuente
1
sí, lo he confirmado
Ringtail
Para mí funciona como se esperaba usando XFCE4.
Grumbel
@BlueXrider, ¿ves el mismo problema que yo? Si es así, ¿qué versión estás usando?
Enganchado el
Confirmé que el código de prueba funciona correctamente. Tengo los tiempos de espera según lo indicado.
Ringtail
66
Alternativamente, puede usar notify-send "Text Here" ; sleep 3 ; killall notify-osd(donde sleep 3es un ejemplo de caducidad (realmente matar) después de 3 segundos).
Pandya

Respuestas:

44

Este es un error conocido: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(El responsable de mantenimiento lo considera una "decisión de diseño").

Boris Bukh
fuente
3
Esto no es realmente un error. Es una decisión de diseño.
Eren Tantekin
68
Una decisión de diseño incorrecta puede ser un error.
Boris Bukh
24
Cuando el software afirma hacer una cosa mientras hace otra, es un error. Si los desarrolladores no quieren que lo consideremos un error, entonces no digas que actúa como si no fuera así.
hytromo
10
Eso no es una característica. Eso es un error! Cuando proporciona una palanca para encender los limpiaparabrisas y no funciona, se rompe.
Matt H
3
@ChristopherDone Con respeto, es un error. La ayuda para notify-send (parte de notify-osd) dice: notify-send --help | grep timeout -t, --expire-time = TIME Especifica el tiempo de espera en milisegundos para que caduque la notificación. Esa es la interfaz principal para un usuario de la herramienta. Esa interfaz principal es del usuario y, por lo tanto, es un error. Es un error con el texto de ayuda o la implementación, dependiendo de su perspectiva, pero definitivamente es un error.
Michael Sparks
21

Como se mencionó en una de las publicaciones anteriores, existe una decisión de diseño para no permitir esta característica. Afortunadamente para usted, otras personas también están en desacuerdo y han establecido un PPA y también puede revertir esta decisión para su sistema.

Para resolver su problema solo:

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

Opcional

Para agregar aún más funciones para enviar-notificar que las que tiene actualmente:

Desde Ubuntu 16.04 en adelante:

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

Para las versiones 9.10-14.10:

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

Para obtener más información sobre la solución anterior, lea este artículo:

Burbujas de notificación configurables para Ubuntu

Fabby
fuente
Desafortunadamente, el repositorio ya no proporciona el paquete, diciendo E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(relacionado: askubuntu.com/questions/50/… )
phil294
@Blauhirn: No soy el desarrollador de dicho paquete. Póngase en contacto con el desarrollador
Fabby
@Blauhirn: respuesta actualizada para el 16.04 en adelante
Fabby
Esto funcionó! Sin embargo, como aclaración para cualquier otra persona, también debe instalar la versión actualizada de notify-osd. es decir: 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 ¡Muchas gracias!
Michael Sparks
1
@MichaelSparks cambió upgradea dist-upgrade. Eso debería encargarse de todo ya que notify-osd ya está instalado y debe actualizarse con seguridad.
Fabby
4

Esta fue una contravención implementada intencionalmente de convenciones establecidas sin descalificación en el entorno del terminal host. es decir. notify-sendya no debería existir, ya que compromete la funcionalidad documentada y esperada bien establecida, por lo tanto, notify-graffitiahora debería existir un nuevo comando : ¿Qué ???? ¡Espere un segundo ... todas esas secuencias de comandos que usan la ortografía del nombre de comando "convencional" se verán comprometidas! cambiando la convención de cómo se escribe el nombre del comando?!?! - hmmm Esta filosofía es excepcionalmente, paradójicamente hipócrita, como lo propugna la interfaz de terminal de escritorio de Unity.

No se puede hacer de ambas maneras, preservando algunas convenciones, es decir. el nombre de un comando y, sin embargo, no otros, la funcionalidad de un comando como se documenta. Si la funcionalidad se ve comprometida, entonces también debería hacerlo el nombre del comando para mantener la integridad, convencionalidad, consistencia, etc. de la "experiencia" del usuario, o es esa "frustración", "molestia", "irritación" del usuario. ..

árbitro:

Marcador: ¿
Notificar-enviar ignora el tiempo de espera?

George Rowell
fuente
Los enlaces "Not-expiring_notifications" y "Notification | Ubuntu App Developer" están rotos (o mejor dicho, la página web a la que se refieren es).
Keith Thompson
2

Hay un pequeño y útil script notify-send.sh como un reemplazo directo para la notificación de envío que le permite cerrar o reemplazar las notificaciones enviadas anteriormente.

Editar: como señaló @Glutanimate, este script admite el tiempo de caducidad de forma predeterminada.

Al final no pude obtener el tiempo de caducidad para trabajar, así que decidí enviar una notificación con un tiempo de espera de 2 segundos como este:

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

NiMa Thr
fuente
¡Este guión es genial! Gracias por compartirlo aquí. Parece que ahora es completamente compatible con los argumentos originales de CLI de notify-send. Es decir: puede enviar una notificación con un tiempo de espera de 2 segundos a través de notify-send.sh -t 2 "Hello World!". He vinculado el script a mi directorio local $ PATH y lo renombré para notificar-enviar. ¡No más tratar con esa implementación de notificar-osd de baja calidad!
Glutanimate
¡Oh genial @Glutanimate! Gracias por informarnos sobre ello.
NiMa Thr
0

Para aquellos que usan el entorno de escritorio Cinnamon, hay una configuración que se puede habilitar:

Notificaciones> Eliminar notificaciones después de que se agote el tiempo de espera

Shai Coleman
fuente
0

Esto es en milisegundos. Probé en XUbuntu 16.04 (Ubuntu XFCE)

notify-send -t 3000 "test"

exactamente 3 segundos

Pawel Cioch
fuente