iCalНесколько дней назад в сообществе Румак один из участников задал интересный вопрос: как можно вывести события из календарей iCal прямиком на рабочий стол? В комментариях подсказали два решения этой задачи. Первым вариантом стала программа GeekTool, с которой не все смогли разобраться, а вторым — платное приложение. Сам я поддерживаю стремление разработчиков заработать на результатах своего труда, но отдавать деньги за такое пустяковое дело было жалко. Так что я решил разобраться с GeekTool и поделиться своим опытом. Забегая вперед скажу, что это оказалось совсем несложным делом.

Что мы хотим

Но для начала немного о том, чего мы хотим достигнуть. Вот как выглядит рабочий стол, о котором шла речь в Румаке:

tumblr_krzifmkMad1qzjb7co1_500

В левом углу выводится текущая дата и список событий из iCal. Стильно, просто и очень удобно. А так выглядит рабочий стол одного из читателей MacRumors:

ical-desk-2

Здесь выводится день недели, число, погода, календарь в нижней части экрана и название проигрываемой в iTunes песни.

Мой рабочий стол выглядит так (можно щелкнуть по картинке для увеличения):

ical-desk-1-small

На экран выводится дата, список событий и дел из iCal.

Как это сделать

Нам потребуется установить две программы. Первая — это GeekTool. Ее можно скачать отсюда. Если вы пользуетесь Mac OS X Leopard, то лучше, наверное, поставить стабильную версию GeekTool 2.1.2. Если уже перешли на Mac OS X 10.6 Snow Leopard, установите релиз-кандидат GeekTool 3.0 RC5. Она, судя по комментариям в блогах и на форумах, под SL работает стабильней. После того, как скачаете программу, установите ее. В системных настройках должен появится новый пункт:

SystemPreferences

Отмечу, что интерфейсы GeekTool 2.1.2 и GeekTool 3.0 RC5 сильно отличаются, я в дальнейшем буду рассказывать о настройке именно 3.0, которая у меня работает под SL.

Нам также потребуется вторая программа. Это iCalBuddy. Она также бесплатна. Загрузить советую последнюю версию iCalBuddy 1.6.12. Распакуйте архив и переместите папку с содержимым в какую-нибудь директорию. В старых версиях программы надо было воспользоваться Терминалом для установки (sudo Путь_к_папке ./install.sh), в новой — достаточно дважды щелкнуть по файлу install.command. Появится окно Терминала, где вас попросят ввести пароль администратора:

Terminal-1

Настройка

Теперь приступаем к самой интересной части — настройке. Откройте GeekTool (найдете в System preferences). Появится вот такое окно:

GeekTool-1

В правой колонке создайте новую группу (я назвал ее Events). Она будет содержать Гиклеты (Geeklet) — инструкции вывода какого-то текста. Затем щелкните по значку Shell и перетащите его на рабочий стол. Появится вот такое окно:

geektool-properties

Здесь мы определяем, что именно будет выводиться на рабочий стол и в каком виде эта информация будет отображена. Самый главный пункт — это Command. Для вывода даты, укажите такую команду:

date '+%A %e %B'.

Date — это собственно команда даты, а '+%A %e %B' — формат даты (в данном случае: полное название дня недели, дата, название месяца). Формат даты можно настроить, список описателей и их значений можно найти здесь.

Для того, чтобы отформатировать текст, в окне Properties щелкните по кнопке Style. В появившемся окне можно выбрать желаемый шрифт, размер, цвет, начертание.

Теперь добавим вывод событий календаря. Снова в окне GeekTool щелкните по значку shell, перетащите его на рабочий стол. В поле Command укажите эту команду:

/usr/local/bin/icalBuddy -nc eventsToday | sed -e "s/*/--/" | sed -e "s/!/!!/"

Она выведет список событий на сегодняшний день из всех календарей iCal. Снова отправляемся в раздел Style, где настраиваем визуальное представление.

Для вывода списка дел (ToDo) из iCal на рабочий стол потребуется создать еще один Geeklet с этой командой:

/usr/local/bin/icalBuddy -nc uncompletedTasks | sed -e "s/*/--/" | sed -e "s/!/!!/"

Завершающие штрихи

Остается добавить секции (в моем случае — «сделать сегодня»). Создайте новый Geeklet, но команду укажите другую:

echo сделать сегодня

Для каждого из GeekLet’ов надо указать дату обновления информации (refresh every). Если блок будет редко обновляться (например, название «сделать сегодня»), промежуток указывайте большой. Интервал обновления событий календаря можно поставить в 10 секунд.

Что дальше

А дальше — играть, экспериментировать, пробовать. Смотрите на различные способы форматирования текста, который выводится на рабочий стол. Самые интересные схемы подразумевают создание нескольких Гиклетов. Тогда для даты можно использовать один стиль, для дня недели — другой, для месяца — третий. Можно не ограничиваться выводом событий и задач iCal, а настроить отображение на рабочем столе погоды, проигрываемой песни, данных статистики посещений сайта и т.п. Фантазия безгранична, возможности GeekTool — почти.

В комментариях можно задавать вопросы — я и другие читатели постараемся на них ответить. Также будем рады, если вы похвастаетесь своими обоями (кидайте ссылки на картинки). Легкий офтопик, но все же… :-)

Полезные ссылки по теме