Este tópico é um pouco antigo, desculpe, mas espero ainda poder adicionar algo útil ao tópico. (também Josef Kufner escreveu um bom roteiro, foi um pouco longo demais para o meu gosto e usa PHP)
Eu também precisava de uma ferramenta, conforme descrito na pergunta original (para enviar uma mensagem a todos os usuários X ativos). E com base nas respostas aqui, escrevi esse pequeno script somente bash, que procura usuários X ativos (usando 'who') e, em seguida, executando o envio de notificação para cada usuário ativo.
E o melhor: você pode usar meu script exatamente como "notificar-enviar", com todos os seus parâmetros! ;-)
notificar-enviar-tudo:
#!/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
Copie o código acima em um arquivo chamado "notify-send-all", torne-o executável e copie-o para / usr / local / bin ou / usr / bin (como desejar). Em seguida, execute-o, por exemplo, como root em uma sessão de console como esta:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Estou usando-o há vários meses, em máquinas diferentes, e não tive nenhum problema até agora, e testei-o com os desktops MATE e Cinnamon. Também executá-lo com sucesso no cron e no anacron.
Eu escrevi esse script para / no ArchLinux, então, por favor, diga-me se você está tendo problemas em outras distribuições ou desktops Linux.