Utas ini agak lama, maaf, tapi saya harap saya masih bisa menambahkan sesuatu yang berguna untuk topik ini. (juga Josef Kufner menulis naskah yang bagus, itu hanya sedikit terlalu lama untuk seleraku, dan itu menggunakan PHP)
Saya juga membutuhkan alat seperti yang dijelaskan dalam pertanyaan awal (untuk mengirim pesan ke semua pengguna X yang aktif). Dan berdasarkan jawaban di sini, saya menulis skrip bash-only kecil ini, yang mencari pengguna-X yang aktif (menggunakan 'siapa'), dan kemudian menjalankan notifikasi-kirim untuk setiap pengguna yang aktif.
Dan yang terbaik: Anda dapat menggunakan skrip saya persis seperti "beri tahu-kirim", dengan semua parameternya! ;-)
beri tahu-kirim-semua:
#!/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
Salin kode di atas ke dalam file bernama "notify-send-all", buat itu dapat dieksekusi dan salin ke / usr / local / bin atau / usr / bin (sesuka Anda). Kemudian jalankan mis. Sebagai root di sesi konsol seperti ini:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Saya menggunakannya beberapa bulan sekarang, pada mesin yang berbeda, dan sejauh ini tidak ada masalah, dan saya sudah mengujinya dengan desktop MATE dan Cinnamon. Juga berhasil menjalankannya di dalam cron dan anacron.
Saya menulis skrip ini untuk / di bawah ArchLinux, jadi tolong beri tahu saya jika Anda mengalami masalah pada distribusi atau desktop Linux lain.