Собственно в gnome уже давно существуют notifications - удобный способ привлечь внимание пользователя. Но что бы не словоблудствовать попусту вот screenshots дают наглядное представление о том что же такое notifications.
Для отправки сообщения пользователю используется команда notify-send. У меня возникло непреодолимое желание использовать notify-send из своих скриптов запускаемых по vixie-cron. Однако тот кто пытался это же осуществить знает, что использование notify-send напрямую из скриптов cron затруднено тем, что в gnu linux разные пользователи запускают gnome-session и cron. И вот собственно для упрощения этой операции был написан скрипт обертка
#!/bin/sh
# notify.sh
# (c) init_6 <sudormrfhalt@gmail.com>
user=`ps -C gnome-session -o user=` #find UID user who start gnome-session
pids=`pgrep -u $user gnome-session` #find PID
title=$1
text=$2
timeout=$3
if [ -z "$title" ]; then
echo You need to give me a title >&2
exit 1
fi
if [ -z "$text" ]; then
text=$title
fi
if [ -z "$timeout" ]; then
timeout=60000
fi
for pid in $pids; do
# find DBUS session bus for this session
DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
/proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
# use it
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
su $user -c "notify-send -u low -t $timeout '$title' '$text' "
done
У меня notify.sh живет по адресу /usr/local/bin/notify.sh Использование хоть напрямую хоть из скрипта банально
notify.sh "Заголовок" "Текст сообщения трам пам пам…"
У notify.sh есть так же не обязательный параметр timeout которым можно задать время жизни сообщения на экране. В кратце смысл скрипта такой - он находит PID и UID пользователя запустившего в системе gnome-session а дальше этому пользователю передается сообщение. Лично мне пока большего и не нужно.
Как нибудь надо будет доработать и прикрутить еще и иконки.
Comments