The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Уведомления о свежей почте в conky,..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Уведомления о свежей почте в conky,..."  +/
Сообщение от auto_tips (??) on 06-Май-10, 04:20 
Ниже описан способ отображения в conky, dzen, xmobar и т.п. уведомления о наличии свежей почты в maildir.

Преимущества данного способа:
1) он выдержан в стиле unix way,
2) не требует обращаться к жёсткому диску чаще, чем это необходимо.

Описание относится к Arch Linux, но процедура достаточно проста, чтобы легко перенести её на любую систему с достаточно свежим ядром Linux.

Идея в том, что появление свежей почты отслеживается посредством [[http://inotify.aiken.cz incron]]; при появлении нового сообщения вызывается скрипт mailstat.sh (см. ниже), который считает новые сообщения в maildir, наблюдаемых incron-ом, формирует текст-уведомление для пользователя и выдаёт это сообщение в именованный канал. Со своей стороны, к примеру, conky читает из того же именованного канала и отображает сообщение. Скрипт пишет в канал многократно, в бесконечном цикле, чтобы сообщение не пропадало из conky; при запуске очередного экземпляра скрипта он прибивает все предыдущие.

Итак, предположим, у нас Arch Linux с пользователем moses и его maildir-ами /home/moses/Mail/work, /home/moses/Mail/club, куда периодически скачивается почта с POP3-сервера. moses хочет узнавать о наличии свежей почты как можно скорее, но не хочет поминутно лазить в почтовый клиент - он предпочёл бы видеть уведомления на панели xmobar.
Вообще говоря, maildir-ов может быть больше, но moses хочет видеть уведомления только об этих.

Устанавливаем incron.

   > sudo pacman -Ss incron

Разрешаем moses-у использовать incron.

   > sudo vim /etc/incron.allow
   moses

Создаём скрипт mailstat.sh.

   > vim ~/scripts/mailstat.sh
   #!/bin/bash
   DZEN_ICONPATH=~/dzen_bitmaps
   TARGET=/tmp/mailstat
   LOCKDIR=/tmp
   LOCKFILE=mailstatlock
   IT=mailstat
   # определяем интересующие maildir-ы
   DIRS=`incrontab -l | grep $IT | awk '{print $1;}' | sort -u`
   # подсчитываем новые сообщения и формируем текст уведомления
   T=""
   for d in $DIRS
   do
       c=`find $d -type f | wc -l`
       if [[ $c -gt 0 ]]; then
           T=$T`echo $d | sed -e 's/\/new$//' | sed -e 's/^.*\///'`": "$c" "
       fi
   done
   # останавливаем ранее запущенный экземпляр скрипта
   find $LOCKDIR -maxdepth 1 -name $LOCKFILE* -print | xargs /bin/rm -f
   # создаём именованный канал для передачи уведомления
   if [ ! -e $TARGET ]; then
       mkfifo $TARGET
   fi
   # беспрерывно передаём уведомление в канал, пока нас не остановит следующий экземпляр скрипта
   touch $LOCKDIR/$LOCKFILE.$$
   while [ -e $LOCKDIR/$LOCKFILE.$$ ] ; do
       echo $T > $TARGET
   done

Запускаем incron.

   > sudo /etc/rc.d/incrond start

Настраиваем incron.

   > incrontab -e
   /home/moses/Mail/work/new IN_CREATE,IN_DELETE,IN_MOVED_FROM /home/moses/scripts/mailstat.sh
   /home/moses/Mail/club/new IN_CREATE,IN_DELETE,IN_MOVED_FROM /home/moses/scripts/mailstat.sh

Убеждаемся, что изменения возымели действие.

   > incrontab -l

Передёргиваем incron.

   > incrontab -d

Настраиваем xmobar для отображения уведомлений.

   > vim ~/.xmobarrc
   Config { font = "-xos4-terminus-medium-r-normal--12-120-72-72-c-60-*-*"
          , bgColor = "black"
          , fgColor = "grey"
          , position = Top
          , lowerOnStart = True
          , commands = [ Run Com "cat" ["/tmp/mailstat"] "mail" 5
                       , Run StdinReader
                       ]
          , sepChar = "%"
          , alignSep = "}{"
          , template = "%StdinReader%}{ <fc=#ee9a00>%mail%</fc>"
          }

Настраиваем автозапуск incron.

   > sudo vim /etc/rc.conf
   DAEMONS=(@metalog network @crond @incrond)

Настраиваем запуск mailstat.sh при старте X-сервера, например, так:

   > vim ~/.xinitrc
   xrdb -merge ~/.Xresources
   /home/moses/scripts/mailstat.sh &
   exec xmonad

URL:
Обсуждается: http://www.opennet.dev/tips/info/2365.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Уведомления о свежей почте в conky, dzen и xmobar"  +/
Сообщение от Аноним (??) on 06-Май-10, 04:20 
Респект за Arch Linux
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру