Puede, pero debe usar un libnotify parcheado para hacerlo
notify-send
no tiene la capacidad de reemplazar las notificaciones existentes antes de que se agote el tiempo de espera (o desaparezca). Este es un error conocido . Sin embargo, un comentarista en el informe de error ha publicado un parche para solucionarlo.
Instalar el parche libnotify-bin de PPA
He creado una versión parcheada del paquete libnotify-bin que permite reemplazos en mi PPA. Actualmente es solo para Ubuntu 12.04, pero si lo necesita para cualquier otra versión actualmente compatible, publique un comentario y haré todo lo posible para que esté disponible.
Para instalar, abra una terminal y:
sudo apt-add-repository ppa: izx / askubuntu
sudo apt-get update
sudo apt-get install libnotify-bin
Cómo usar las capacidades de reemplazo
El parche notify-send
incluye dos nuevos modificadores, -p
(o --print-id ) y -r
(o --replace-id ). Los --help
describe como:
-p, --print-id Imprime la ID de notificación.
-r, --replace-id = REPLACE_ID El ID de la notificación a reemplazar.
- Con
-p
, cada uno notify-send
devolverá una ID N (número / entero).
- Emitir otro
notify-send
con -r N
reemplazará la notificación previa inmediatamente .
Por ejemplo, para bash, puede guardar la ID notify-send -p ...
con:
NID=$(notify-send -p "MESSAGE-1")
y luego reemplazarlo con:
notify-send -r $NID "MESSAGE-2"
Puede usar recursivamente tanto -p como -r en un script, siempre que la variable -r se inicialice a 0 al principio.
Aquí hay un script simple que muestra notificaciones contando de 0 a 100 a intervalos de medio segundo:
#! / bin / bash
NID = 0
para i en {0..100..10}
hacer
NID = $ (notificar-enviar -p -r $ NID $ i)
dormir 0.5
hecho
Puede usar la sugerencia "sincrónica" para crear una notificación de "confirmación" que reemplazará las notificaciones de confirmación anteriores. Por ejemplo:
La sugerencia "x-canonical-private-synchronous" se especifica en este documento . Para especificar una pista, use
-h type:name:value
. El tipo aquí esstring
, el nombre esx-canonical-private-synchronous
, y parece que el valor puede ser lo que quieras.Entonces, si su primera notificación se crea con esa pista y la segunda también, la segunda reemplazará inmediatamente a la primera. (Consulte Animaciones y duraciones en la documentación, en la columna para "burbujas de confirmación").
fuente
string:x-canonical-private-synchronous:anything
Era exactamente lo que necesitaba. Gracias por esta respuesta También para vincular a la documentaciónX-ref:
¿Cómo forzar que aparezca una nueva notificación en notify-osd sin esperar a que salga la anterior?
sin parches simplemente puedes hacer
Marcador:
¿Cómo uso 'notificar-enviar' para reemplazar inmediatamente una notificación existente?
Envía un error notify-osd (2592): Operación no permitida. Qué significa eso?
Puede significar que los privilegios son inadecuados y requieren:
fuente
notify-osd(2592): Operation not permitted
. Qué significa eso?Creé una secuencia de comandos simple de Python que funciona casi igual que la notificación de envío, pero tiene soporte para
--replaces-id
.notify-send.py
web: https://github.com/phuhl/notify-send.py
Un script de Python para enviar notificaciones de escritorio desde el shell.
Acerca de
Libnotify es parte de muchos scripts en el mundo Linux. Utiliza muchas de las características especificadas de la Especificación de notificaciones de escritorio y las hace accesibles a los scripts de shell. Sin embargo, no permite reemplazar una notificación existente con el
replaces-id
. Este es un error conocido desde 2008 y tiene un parche desde 2012. Sin embargo, el parche aún no está corriente arriba (2018).Este script de Python utiliza el paquete notify2 y expone la funcionalidad al shell.
Diferencias entre notify-send.py y notify-send
notify-send.py -h
muestra ayuda en lugar de ser el parámetro para sugerencias. Para usar pistas--hint
.notify-send.py -r ID
ynotify-send.py --replaces-id ID
existe. Para reemplazar una llamada de notificaciónnotify-send.py
con la ID que fue devuelta por la notificación a ser reemplazada.notify-send.py
devuelve la ID de la notificación recién creada.notify-send.py --replaces-process NAME
existe Cada notificación que se crea con el mismo NOMBRE reemplazará cada notificación anterior con el mismo NOMBRE. Si se llama con este parámetronotify-send.py
podría bloquearse, es mejor llamarlo con un final&
.Instalación
Requiere python3.
Uso
notifique-envíe [.py] como usuario root
Para mostrar notificaciones, incluso si libnotify o
se usa desde el usuario root, estos dos scripts son útiles.
Con
notify-send.sh
así:Ver también
También eche un vistazo a mi demonio de notificaciones inspirado en Dunst , pero con varias mejoras, incluida la posibilidad de un fondo transparente y un centro de notificaciones que almacene las notificaciones.
fuente