Notificaciones de escritorio en Linux
Confiando en el comando notify-send he creado un script para que cualquier usuario pueda enviar mensajes a través de todos los escritorios de todos los usuarios actualmente logueados y usando una sesión 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
Considera instalar el paquete libnotify-bin en caso de que el comando notify-send no esté disponible en tu sistema.
También puede consultar la página de manual de notify-send para obtener instrucciones adicionales sobre cómo utilizar esta fantástica pieza de código.
Como ejemplo, si dejamos esta línea:
notify-send --urgency=normal --expire-time 1 "Heads up" "Incoming message…"
Nos da:
Que por supuesto, se pega a nuestro icono de notificación en la barra de tareas si lo tenemos activado:
Para quienes lo necesiten como referencia futura en caso de que se pierda esta entrada o este blog, pueden encontrarlo aquí:
https://github.com/aci686/Bash-Scripts/blob/master/notify-send-all.sh