Ця тема трохи стара, вибачте, але сподіваюся, що все-таки я можу додати щось корисне до теми. (також Йозеф Куфнер написав хороший сценарій, це було трохи задовго на мій смак, і він використовує PHP)
Також мені знадобився інструмент, як описано в оригінальному запитанні (щоб надіслати повідомлення всім активним користувачам X). На основі відповідей тут я написав цей маленький скрипт, доступний лише для bash, який шукає активних X-користувачів (використовуючи "хто"), а потім виконує сповіщення-відправлення для кожного активного користувача.
І найкраще: ви можете використовувати мій сценарій точно так само, як "сповістити-надіслати", з усіма його параметрами! ;-)
сповістити-надіслати все:
#!/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 або настільних комп’ютерах.