LINUX.ORG.RU

Уведомления на dzen

 


0

1

Достаточно давно написал уведомлялку на dzen, сейчас пытаюсь исправить её дефект.

#!/bin/bash

width=520
xpos=700
ypos=1180

export font="-*-terminus-medium-*-*-*-16-*-*-*-*-*-iso10646-*"
myFgColor="#dcdcdc"
myBgColor="#0f0f0f"

export dzen_style="-fg $myFgColor -bg $myBgColor -fn $font -h 20 -e onstart=lower"

foreground=#ececec
alertfg=#934a5a

#=== loop ===#
while :; do

if [ -f /tmp/notify ]
then
  notify=$(cat /tmp/notify | sed '2,$d')
  message="^fg($alertfg)--[ ^fg($foreground)$notify^fg($alertfg) ]--"
else
  message=""
fi

echo $message

sleep 0.2

done | dzen2 -x $xpos -w $width -y $ypos $dzen_style \
-e  "entertitle=exec:~/.dzen/notify/notify_remove.sh"

Для уведомлений используется отдельная панелька (которая появляется по центру нижней панельки).

Если в файле /tmp/notify появляются уведомления (одно на строчку), то оно будет показано, а при наведении мышки на панельку будет удалено (и после этого будет показано следующее уведомление).

Проблема в том, что даже если уведомлений нет, то панелька всё равно отображается и перекрывает информацию с нижней панели. Обычно это длинное название трека. Пример с уведомлением:

1) Уведомление есть и панелька его показывает:

http://i.imgur.com/4krAr.png?1?3122

2) Уведомлений нету, но панелька закрывает трек:

http://i.imgur.com/4M12K.png?1

3) Панелька убита, трек видно полностью:

http://i.imgur.com/Ixgd8.png?1

Вот я хочу чтобы её не было видно, когда нет уведомлений. Как бы это сделать?

Я было захотел изменить ширину до одного пикселя (грязное решение, но пока ничего другого в голову не пришло) следующим образом:

while :; do

if [ -f /tmp/notify ]
then
  width=520
  notify=$(cat /tmp/notify | sed '2,$d')
  message="^fg($alertfg)--[ ^fg($foreground)$notify^fg($alertfg) ]--"
else
  width=1
  message=""
fi

echo $message

sleep 0.2

done | dzen2 -x $xpos -w $width -y $ypos $dzen_style \
-e  "entertitle=exec:~/.dzen/notify/notify_remove.sh"

Но это не сработало, потому, что переменные в бесконечном цикле не выходят из него.

А если сделать так:

echo $message | dzen2 -x $xpos -w $width -y $ypos $dzen_style \
-e  "entertitle=exec:~/.dzen/notify/notify_remove.sh"

sleep 0.2

done

То панелька начинает мерцать с частотой sleep (и установка флага -p N не помогает). Что ещё можно попробовать, чтобы решить проблему?

inotify в школе уже не проходят?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.