Este hilo es un poco viejo, lo siento, pero espero poder agregar algo útil al tema. (también Josef Kufner escribió un buen script, fue demasiado largo para mi gusto y usa PHP)
También necesitaba una herramienta como se describe en la pregunta original (para enviar un mensaje a todos los usuarios X activos). Y en base a las respuestas aquí, escribí este pequeño script solo para bash, que busca usuarios X activos (usando 'who'), y luego ejecuta notificar-enviar para cada usuario activo.
Y lo mejor: ¡puedes usar mi script exactamente como "notificar-enviar", con todos sus parámetros! ;-)
notificar-enviar-todo:
#!/bin/bash
PATH=/usr/bin:/bin
XUSERS=($(who|grep -E "\(:[0-9](\.[0-9])*\)"|awk '{print $1$5}'|sort -u))
for XUSER in $XUSERS; do
NAME=(${XUSER/(/ })
DISPLAY=${NAME[1]/)/}
DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
PATH=${PATH} \
notify-send "$@"
done
Copie el código anterior en un archivo llamado "notify-send-all", hágalo ejecutable y cópielo en / usr / local / bin o / usr / bin (como desee). Luego ejecútelo, por ejemplo, como root en una sesión de consola como esta:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Lo uso desde hace varios meses, en diferentes máquinas, y hasta ahora no tuve ningún problema, y lo probé con los escritorios MATE y Cinnamon. También lo ejecutó con éxito dentro de cron y anacron.
Escribí este script para / bajo ArchLinux, así que dígame si tiene problemas en otras distribuciones de Linux o escritorios.