понедельник, 14 февраля 2011 г.

Расписание в Conky

Как вывести расписание в Conky? Подобным вопросом озадачил меня читатель под ником 'acid', за что ему отдельное спасибо - появилась тема для очередной статьи. Пытаясь дать ответ в комментариях, немного ошибся с решением задачи, теперь попробую осветить подробнее.


Так вот, суть задачи: выводить расписание в Conky на текущий день недели и отмечать завершенные дела, исходя из прошедшего времени. Отталкиваясь от поставленных условий, объявляем локальные переменные:

 
local Min=tonumber(os.date('%M'))
local Hour=tonumber(os.date('%H'))
local WeekDay=tonumber(os.date('%u'))
local Time=0
nX=100
nY=50

На каждый день недели определяем таблицу, где каждые три элемента будут часы, минуты и описание события соответственно:

local tMonday={6,30,'Подъем',8,0,'Работа',12,30,'Обед',
13,30,'Работа',17,0,'Конец рабочего дня',
19,0,'Ужин',23,30,'Сон'}


local tTuesday ...
local tWednesday ...
local tThursday ...
local tFriday ...
local tSaturday ...
local tSunday ...

Далее составляем циклы на каждый день, в которых осуществляем обработку объявленных выше таблиц:

if WeekDay==1 then
for i=1, table.maxn (tMonday), 3 do
Time=Min+60*Hour
if Time==(tMonday[i]*60+tMonday[i]) then
nY=nY+25
fDrawTextCenter (nX, nY, tMonday[i+2], 24)
else
nY=nY+20
fDrawTextCenter (nX, nY, tMonday[i+2], 14)
end
end
end  

if WeekDay==2 then ...
if WeekDay==3 then ...
if WeekDay==4 then ...
if WeekDay==5 then ...
if WeekDay==6 then ...
if WeekDay==7 then ...

Здесь "table.maxn (tMonday)" - количество элементов в таблице. Неплохо бы сделать проверку хотя бы на то, чтобы это значение было кратно трем, но делая конфигурацию "для себя" такое ни к чему.
Функцию "fDrawTextCenter" можно взять в более ранних постах про Conky или собрать что-то свое для вывода текста.
В цикле производится сравнение текущего времени с параметрами, заданными в таблице, путем вычисления количества пройденных минут от полночи.
Это только логика, дальше все зависит от вашей фантазии!


Послесловие
Значение слова "оффшор" дословно означает - "вне берега" (в переводе с английского). В экономическом плане - финансовый центр, предоставляющий компаниям других стран различные льготы, в том числе и налоговые.


Смотри также

4 коммент.:

  1. А я есть какой нибудь удобный способ работы с Google Calendar?

    ОтветитьУдалить
  2. Вроде как для работы conky c Google Calendar есть специальный скрипт в репозитории ConkyHardcore. В нем есть и другие полезности. А в прочем, синхронизировать экран с календарем Гугл удобно, но если всегда одно и то же и не всегда есть интернет под рукой, то оптимальный способ - собственный скрипт.

    ОтветитьУдалить
  3. да, меня интересует в первую очередь offline решения.
    например, на работе не всегда хочется пользоваться корпоративными ресурсами с личных железок, а free вайфай здания бывает ловит хреново, на наших этажах.
    А у меня есть масса вещей, которые надо синхронизировать между кучей моих компьютеров с разными OS

    -поэтому offline чтения google reader с картинками я решил написание своего клиента к google reader (увлекательное чтение блогов в дороге и на унылых мероприятиях)
    -проблему записной книжку более менее решает tomboy привязанный к one.ubuntu
    -ну почта понятно
    -с надеждой смотрю на бету cинхронизации файлов с one.ubuntu под винду. (синхронизацию документов между ubuntu ноутбуками решил, а вот с виндовыми пока нет)
    -осталась проблема календаря?!

    ОтветитьУдалить
  4. maratische, я начинал делать конфигурацию для Google Calendar, но забросил с приобретением Androidоаппарата. Смысл такой, чтобы парсить XML-файл с закрытого адреса календаря (в настройках есть ссылка) и затем разбирать в Conky, по типу как сделан скрипт для погоды с GisMeteo.

    ОтветитьУдалить