Marcador: ¿ Botón Cerrar en notificar-osd?
árbitro:
Conceptos previamente probados, bash
la solución "deshabilitada" de graffiti emergente de OSD se concibe y se desarrolla como:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Esto se puede ejecutar en una terminal o como una tarea en segundo plano: deténgalo y se reanudará el graffiti emergente.
El OP declaró "No, no puedo desactivarlo". Si con esto significa que el sistema de notificación NO debe ser deshabilitado por el autor, entonces esta solución es consistente con eso. El sistema está intacto. Si significa que el autor no sabe cómo hacerlo, entonces la solución es pertinente.
Detalles explicados debajo de la línea. Lo último sería incrustar todo en (¿en?) El DBus, para invocar directamente
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification(uint id)
Una solución rudimentaria muy, muy, muy ingenua, que es más una prueba de concepto que práctica, esencialmente "deshabilita" notify-osd
(o al menos sus efectos). ¡No olvide terminarlo cuando termine de probar! por ETX'ng con <ctrl> -C o cerrando la ventana de terminal, etc. ¡Hace su trabajo pero no muy pragmáticamente! ya que desafortunadamente otros trabajos sufren tratando de hacer el suyo ...
while true; do killall notify-osd; done
(para "escuchar" actividad relevante que tal vez desee " grep
excluir"
notify-osd: no process found ....
)
Pruébelo ejecutándolo en una ventana de terminal y desde otra ventana de terminal intente hacer:
notify-send "test 1" "now you see it not"
notify-send "test 2" "you see it not after test 1 evaporates"
notify-send "test 3" "finally after test 2 evaporates"
Detenga el primer proceso y luego intente los mensajes nuevamente.
Quizás un notify-osd
indicador para el unity-panel-service
podría invocar killall notify-osd
. El botón de cierre de zona activa no (y no puede) residir en la ventana de notificación, pero estaría disponible en el panel de indicadores. Esto es completamente análogo al mismo concepto que Unity tiene para Windows. El uso de la barra superior para el cierre de notificaciones es similar a la forma en que Unity exilia los menús de la ventana con cuadros de cierre, mini, maxi en la barra de menú superior.
Una solución verdaderamente elegante haría que el indicador aparezca cuando la actividad DBus para los notify-osd
manifiestos desaparezca cuando no haya notificaciones pendientes.
También podría abordar el problema de las notificaciones apiladas : solo se puede ver una a la vez y si hay varias notificaciones pendientes, cada una debe evaporarse antes de que aparezca la siguiente, por lo general no se pueden ver simultáneamente.
DBus-monitor
'ng de la notify-osd
interfaz de notificación sin embargo proporcionar acuse de recibo inmediato de las notificaciones pendientes, incluso si no lo es ya que muestran. (Y si killall notify-osd
se emite de inmediato, ¡listo!)
Seleccione Todo, Arrastre y suelte en una ventana de terminal las siguientes pruebas:
notify-send "test 1" "now you see it"
notify-send "test 2" "you see it after test 1 evaporates"
notify-send "test 3" "finally after test 2 evaporates"
ahora haga lo mismo con p {r} oof:
notify-send "test 1" "now you don't"
notify-send "test 2" "you see it not! after test 1 evaporates"
notify-send "test 3" "NOT finally after test 2 evaporates"
killall notify-osd
notify-send "gonzo" "gone nada zip zilch"
La killall notify-osd
solución sugerida se activaría cuando DBus monitor
detecte actividad de graffiti emergente OSD.