Ce fil est un peu ancien, désolé, mais j'espère pouvoir encore ajouter quelque chose d'utile au sujet. (Josef Kufner a également écrit un joli script, c'était juste un peu trop long à mon goût, et il utilise PHP)
J'avais également besoin d'un outil tel que décrit dans la question d'origine (pour envoyer un message à tous les utilisateurs X actifs). Et sur la base des réponses ici, j'ai écrit ce petit script bash uniquement, qui recherche les utilisateurs X actifs (en utilisant «qui»), puis en exécutant notify-send pour chaque utilisateur actif.
Et le meilleur: vous pouvez utiliser mon script exactement comme "notify-send", avec tous ses paramètres! ;-)
notifier-envoyer-tout:
#!/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
Copiez le code ci-dessus dans un fichier nommé "notify-send-all", rendez-le exécutable et copiez-le dans / usr / local / bin ou / usr / bin (comme vous le souhaitez). Ensuite, exécutez-le par exemple en tant que root dans une session de console comme ceci:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Je l'utilise depuis plusieurs mois maintenant, sur différentes machines, et je n'ai eu aucun problème jusqu'à présent, et je l'ai testé avec les ordinateurs de bureau MATE et Cinnamon. Également exécuté avec succès dans cron et anacron.
J'ai écrit ce script pour / sous ArchLinux, alors dites-moi si vous rencontrez des problèmes sur une autre distribution Linux ou un autre bureau.