Questo thread è un po 'vecchio, mi dispiace, ma spero di poter ancora aggiungere qualcosa di utile all'argomento. (anche Josef Kufner ha scritto una bella sceneggiatura, era un po 'troppo lunga per i miei gusti e usa PHP)
Avevo anche bisogno di uno strumento come descritto nella domanda originale (per inviare un messaggio a tutti gli utenti X attivi). E sulla base delle risposte qui, ho scritto questo piccolo script solo bash, che cerca gli utenti X attivi (usando 'chi') e quindi eseguendo notifica-invio per ogni utente attivo.
E il meglio: puoi usare il mio script esattamente come "notification-send", con tutti i suoi parametri! ;-)
notify-send-tutto:
#!/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
Copia il codice sopra in un file chiamato "notification-send-all", rendilo eseguibile e copialo in / usr / local / bin o / usr / bin (come preferisci). Quindi eseguilo ad es. Come root in una sessione della console come questa:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Lo sto usando da diversi mesi, su macchine diverse, e finora non ho avuto problemi, e l'ho testato con i desktop MATE e Cinnamon. Eseguendolo anche con successo all'interno di cron e anacron.
Ho scritto questo script per / sotto ArchLinux, quindi per favore dimmi se hai problemi su altre distribuzioni o desktop Linux.