Эта ветка немного старая, извините, но я надеюсь, что смогу добавить что-то полезное в тему. (также Йозеф Куфнер написал хороший сценарий, на мой вкус он был слишком длинным и использует PHP)
Мне также был нужен инструмент, как описано в исходном вопросе (чтобы отправить сообщение всем активным пользователям X). И основываясь на ответах здесь, я написал этот небольшой скрипт только для bash, который ищет активных пользователей X (используя «кто»), а затем запускает команду notify-send для каждого активного пользователя.
И самое лучшее: вы можете использовать мой скрипт в точности как «notify-send» со всеми его параметрами! ;-)
уведомительный отправить-всего:
#!/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
Скопируйте приведенный выше код в файл с именем «notify-send-all», сделайте его исполняемым и скопируйте его в / usr / local / bin или / usr / bin (как вам нравится). Затем запустите его, например, от имени пользователя root в сеансе консоли следующим образом:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Я использую его уже несколько месяцев на разных машинах, и у меня до сих пор не было проблем, и я протестировал его на настольных компьютерах MATE и Cinnamon. Также успешно работает в cron и anacron.
Я написал этот скрипт для / под ArchLinux, поэтому, пожалуйста, сообщите мне, если у вас проблемы с другими дистрибутивами Linux или рабочими столами.