Календарь в conky

Conky – это программа для мониторинга системы под X Window System. Говоря простыми словами индикатор состояния системы.

Используя conky очень удобно, не отрываясь от решаемых задач, следить за параметрами системы. Я слежу за использованием памяти, дискового пространства, процессора; скоростью входящих/исходящих сетевых соединений, состоянием батареи.

Очень неплохой вариант использовать conky для отображения календаря на рабочем столе.

Простейший вариант календаря.

Тут все просто. Возьмем уже готовый конфиг (по азам настройки ничего писать не буду, в сети полно материалов) и слегка его подправим. Вывод conky поместим куда-нибудь в правый верхний угол, зададим моноширинный текст (я предпочитаю использовать шрифт Terminus), частоту обновления установим пореже, скажем раз в минуту, и в переменной TEXT поместим следующую строку:

${exec cal -m}

В итоге на рабочем столе будет простенький календарик на текущий месяц.

Вариант с подсветкой текущей даты.

Посмотрели? Слишком убого как-то…

А давайте подсветим текущую дату!?

С этим немножко сложнее из-за особенностей conky. Нам придется перед запуском запускать скрипт, который будет генерировать конфиг для conky. Поскольку он будет менять только значение переменной TEXT, весь конфиг, выделяем в файл шаблон. А значение переменной TEXT будем дописывать с помощью такого скрипта:

#!/bin/sh

cat ~/bin/calendar/conkyrc.template 

DD=`date '+%d' | sed -e s/^0//`
echo '${font Terminus:size=8}'
echo -n '${color1}'
cal -m | sed -e 's/$/ /' -e 's/^/ /' -e 1!d
echo -n '${color2}'
cal -m | sed -e 's/$/ /' -e 's/^/ /' -e 2!d
echo -n '${color3}' 
cal -m | sed -e 's/$/ /' -e 's/^/ /' -e 's/'$DD'/${font Terminus:size=8:weight=bold}${color5}&${font Terminus:size=8}${color4}/' -e 1,2d

В шаблоне конфигурационного файла нужно определить переменные:
color1 – цвет названия месяца и года;
color2 – цвет легенда по дням недели;
color3 – цвет прошедших дней;
color4 – цвет дней календаря из будущего периода;
color5 – цвет текущего дня.

Текущий день также выделяется жирным шрифтом.

Навороченный календарь.

Нам этого кажется мало и мы добавляем в наш календарь прошлый и следующий месяцы. А также выделяем цветом выходные дни.

Меняем скрипт, генерирующий конфигурационный файл conky на этот:

#!/bin/sh

cat ~/bin/calendar/conkyrc.template 

DL=`date -d '-1 month' '+%m %Y' | sed -e s/^0//`
DD=`date '+%d' | sed -e s/^0//`
NLC=`cal -m | sed -e 's/$/ /' -e 's/^/ /' | grep -n ' '$DD' ' | sed -e 's/:.*$//'`
DN=`date -d '1 month' '+%m %Y' | sed -e s/^0//` 

echo '${font Terminus:size=8}'
echo -n '${color1}'
cal -m $DL| sed -e 's/$/ /' -e 's/^/ /' -e 1!d
echo -n '${color2}'
cal -m $DL | sed -e 's/$/ /' -e 's/^/ /' -e 2!d
cal -m $DL | sed -e 's/$/ /' -e 's/^/${color3} /' -e 's/^\(.\{1,25\}\)\(.*\)/\1${color6}\2/' -e 1,2d 

echo -n '${color1}'
cal -m| sed -e 's/$/ /' -e 's/^/ /' -e 1!d
echo -n '${color2}'
cal -m | sed -e 's/$/ /' -e 's/^/ /' -e 2!d
# first
cal -m | sed -e 's/$/ /' -e 's/^/${color3} /' -e 's/^\(.\{1,25\}\)\(.*\)/\1${color6}\2/' -e 1,2d -e ${NLC},9d
# current
if [ "$DD" -gt "9" ]
then
    cal -m | sed -e 's/$/ /' -e 's/^/${color3} /' -e 's/^\(.\{1,25\}\)\(.\{1,2\} \)/\1${color7}\2${color7}/' -e 's/\('$DD' \)\(.\{1,2\}\)/${color5}${font Terminus:size=8:weight=bold}\1${font Terminus:size=8}${color4}\2/' -e 's/.\{1,9\}\(.\{1,3\}\).\{1,9\}\('$DD' \)$/${color6}\1${color5}${font Terminus:size=8:weight=bold}\2${font Terminus:size=8}/' -e ${NLC}!d
else
    cal -m | sed -e 's/$/ /' -e 's/^/${color3} /' -e 's/^\(.\{1,25\}\)\(.\{1,2\} \)/\1${color7}\2${color7}/' -e 's/\('$DD' \)\(.\{1,2\}\)/${color5}${font Terminus:size=8:weight=bold}\1${font Terminus:size=8}${color4}\2/' -e 's/.\{1,9\}\(.\{1,3\}\).\{1,10\}\('$DD' \)$/${color6}\1${color5}${font Terminus:size=8:weight=bold} \2${font Terminus:size=8}/' -e ${NLC}!d
fi
# last
cal -m | sed -e 's/$/ /' -e 's/^/${color4} /' -e 's/^\(.\{1,25\}\)\(.*\)/\1${color7}\2/' -e 1,${NLC}d 

echo -n '${color1}'
cal -m $DN | sed -e 's/$/ /' -e 's/^/ /' -e 1!d
echo -n '${color2}'
cal -m $DN | sed -e 's/$/ /' -e 's/^/ /' -e 2!d
cal -m $DN | sed -e 's/$/ /' -e 's/^/${color4} /' -e 's/^\(.\{1,25\}\)\(.*\)/\1${color7}\2/' -e 1,2d

В шаблон добавляем:
color6 – цвет для выходных дней из прошедшего периода;
color7 – цвет для выходных дней календаря будущего периода.

Все варианты календариков с шаблоном и скриптом запуска в одном архиве.


Комментарии

  1. (#)   szpargalki:

    У предложенного варианта календарика есть недостаток - в полночь не изменяется текущий день. Т.е. остается подсвеченной дата запуска conky.
    Если вы используете conky версии 1.7.1 и выше, добавьте в crontab запуск скрипта генерации конфига. Скрипт запускайте раз в сутки (в полночь).
    Если версия conky меньше 1.7.1 (не умеет перечитывать конфиг), то после запуска скрипта генерации конфига необходимо будет перезапустить conky.

Оставить комментарий

Ответ на Календарь в conky