Достаточно давно написал уведомлялку на 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 не помогает). Что ещё можно попробовать, чтобы решить проблему?