Mac Radar Лайфхакер ЖКХакер Ловим Robotor

Как вывести события из календаря iCal прямо на рабочий стол?

Комментарии: 45

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 — почти.

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

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

  • Kotfree

    Спасибо за статью! Но у меня не вытаскивается на рабочий стол shell да и все остальное. Что делать?
    Стоит Лев.

  • Владимир

    Я уже давно не пользуюсь GeekTool, так что просто дам ссылку на статью, в которой как раз и говорится про это:

    http://rmp135.posterous.com/ical-on-the-desktop…

  • Koshevoy

    а что ввести в Command чтобы показывало события завтрашнего дня? Заранее спасибо

  • Артем Фролов

    жаль :(

  • Vladimir Yashnikov

    Артем, кнопки управления вывести не удастся, это точно известно.

  • Артем Фролов

    просто я хочу сделать на рабочем столе активные кнопки управления iTunes (play, next track, volume) может знаете как сделать? :)

  • Артем Фролов

    еще вопрос, гиклет shell — с ним все ясно, image — тоже, а вот File для чего нужен? пробовал разные файлы — результат нулевой…

  • Артем Фролов

    спасибо :) работает!!!

  • Vladimir Yashnikov

    Кстати, еще удобнее выводить в формате «16 ноября 2009″. Команда такая: /usr/local/bin/icalBuddy --dateFormat "%d %B %Y" -nc uncompletedTasks | sed -e "s/*/--/" | sed -e "s/!/!!/"

  • Vladimir Yashnikov

    Артем, в разделе command вместо /usr/local/bin/icalBuddy -nc uncompletedTasks | sed -e "s/*/--/" | sed -e "s/!/!!/", укажите это: /usr/local/bin/icalBuddy --dateFormat %d.%m.%Y -nc uncompletedTasks | sed -e "s/*/--/" | sed -e "s/!/!!/".

  • Артем Фролов

    а возможно ли как-нибудь поменять формат даты, отображаемой в задачах с YYYY-MM-DD в DD.MM.YYYY? гораздо читабельней было бы

  • Vladimir Yashnikov

    Skazkin, у меня тоже есть претензия к GT. Он временами меняет язык с русского на английский. Затем сам же восстанавливает всё обратно. Воспроизвести баг пока не удается. :-)

  • Skazkin

    Пару недель назад делал все это, события на стол и тд. 3-я версия глючила, в плане видео. Система 10.5.8 выдавала всякие сбои, VLC очень криво выдавала картинку. Решил отложить этот «секс» с GeekTool в ящик на некоторое время. А штука действительно уникальная в своем роде и красивая. Я перерыл листов 40 на буржуйском форуме:)

  • Vladimir Yashnikov

    Yegor4i, уточню путь до файла: /Users/ваше-имя-пользователя/.icalBuddyConfig.plist. Он должен быть тут. Если нет, могу конфиг выложить отдельно, скачаете его и положите в корень. ОК?

  • Yegor4i

    Спасибо! Только вот что странно, такого файла у меня нет и нигде не получается найти :(

  • Vladimir Yashnikov

    Yegor4i. Надо отредактировать файл ~/.icalBuddyConfig.plist (он лежит в корне пользовательской директории). Файл этот скрыт, чтобы его увидеть, откройте Textmate, там нажмите Command-O. В окне открытия файла нажмите shift+command+. (точка). Будут показаны скрытые файлы. Открыв файл, измените параметр dueDateValue.

  • Yegor4i

    А как вы сделали, чтобы время события было цветом, отличным от названия самого события?

  • n310788

    Огромное спасибо у меня как раз Macbook 1280х800

  • Vladimir Yashnikov

    n310788, держите.

    Правда только в разрешении 1280х800.

  • n310788

    да с яхтой можно пожалуйста

  • Vladimir Yashnikov

    n310788, какая именно? С яхтой?

  • n310788

    Красивая картинка тоже такую хочу поделитесь пожалуста.

  • Vladimir Yashnikov

    Константин, а посмотрите System Preferences > Language & Text. Там есть вкладка Formats. Регион Russia установлен?

    По поводу цветов. Дату обычно выводят несколькими гиклетами (отдельно день, месяц, год). Каждый из них можно оформить независимо от други. Если вы имели в виду цвет даты событий, полей заметок и ссылок, то эти настройки хранятся в файле ~/.icalBuddyConfig.plist

  • Константин

    Vladimir Yashnikov,
    у меня Snow Leopard, GeekTool версии 3.0 RC5, в системе в настройках стоит следующий приоритет языков русский, затем английский.
    в терминале DATE возвращал английские названия месяцев — обошел через EXPORT LANG=ru_RU — после такой команды в терминале DATE возвращает русские названия месяцев. Но в скриптах для GeekTool — не помогает. Пришлось сделать через замену с помощью SED. Может что-то не учел? И пока не могу сделать часть текста (как на вашел скриншоте) разными цветами.
    Если есть возможность помочь — буду рад любому тыканью моего носа в соответствующую документацию/

    Спасибо

  • Vladimir Yashnikov

    Константин, в System Preferences выберите русскоязычный интерфейс, а также используйте GeekTool версии 3.0 RC5.

  • Константин

    Сделал как написано в статье, работает, но название месяца и дня недели выводит на английском — куда посмотреть, чтобы сделать русский вариант текстов?

  • Vladimir Yashnikov

    Дмитрий, а какая версия ОС? Какая версия GeekTool?

  • Дмитрий

    Я тут сделал как написано, а точнее создал шелл, ввел:
    /usr/local/bin/icalBuddy -nc uncompletedTasks | sed -e «s/*/—/» | sed -e «s/!/!!/»

    А он выдает:
    — Сделать ХХХ
    url: mailitem:FC0FABD5-….
    priority: low

    как от этого избавиться?

  • Vladimir Yashnikov

    Sergey Tugarinov: Комментарии поправил
    Njordy: сейчас несколько занят, но сегодня сяду разбираться с вопросом :-)

  • Ростислав

    Сорри, версия была старая, 3.0, а не 3.0 RC5. Переставил, все поправилось.

  • Ростислав

    У меня название недели на английском выводится (системный русский), как сделать на русском?

  • Njordy

    «как бы еще вывести текущую песню iTunes?»
    Ну, для этого можно использовать сторонний софт, бесплатный или платный, который сделает это лучше и даже с красивой обложкой.

    P.S. Статья немало народу встревожила :)

  • http://safariplugins.ru/ Sergey Tugarinov

    как бы еще вывести текущую песню iTunes?

    http://geektool3.tynsoe.org/boards/3/topics/show/12

  • Артем

    Vladimir Yashnikov, у меня нет такого файла, как ни странно :) лежит только локализация, сделанная самостоятельно

  • Vladimir Yashnikov

    tvsm22, с той версией GeekTool вам поможет справиться эта статья. Она на английском, но сложного ничего нет. Можно еще попробовать поставить GeekTool версии 3.0, предварительно удалив старую.

  • Vladimir Yashnikov

    Артем, а взгляните на эту картинку. Я не использовал дефисы или подчеркивания. В файле .icalBuddyConfig.plist (он лежит в корне пользовательской директории и при этом скрыт) есть такая настройка:

    firstItemLine
    bold, underlined

    underlined — это я уже добавил и получились такие разделители, как на картинке. Править .icalBuddyConfig.plist можно программой Property List Editor или, например, TextMate.

  • http://blog.postquickly.com/ tvsm22

    Статья то отличная, вот только у меня пока что предыдущая версия mac os 10.5.8 и тут интерфейс софтины совсем по другому выглядит geektool 2 я поставил и сижу, туплю :-) тут значок shell не петеращить на рабочий стол скажем, потому как нету тут значка, shell из выпадающего меню выбирается и т.д.

    Вобщем пойду шариться по мануалам

  • Артем

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

  • http://appleist.ru appleist

    Наконец-то отличная статья! :) Только поддерживаю идею насчет advanced курса!!!
    Tnx!!!

  • http://artstore.org.ua mixazen

    Да, огромное спасибо автору! Подключил еще скриптик погоды, скорость Up / Dn — как бы еще вывести текущую песню iTunes?
    И давайте делиться полезностями к софтинке…))

  • http://bulaev.org Сергей Булаев

    Пост очень понравился! Клевый и полезный :) Кстати @gva, для ubuntu сто пудов есть что то подобное, я пару лет назад делал нечто в этом роде на ней.

  • Vladimir Yashnikov

    Njordy, угу, есть такие планы :)

  • http://github.com/gumayunov gva

    Ммм.. отличная статья! Я себе теперь на ubuntu так же хочу.

  • Njordy

    А может быть всё таки после такого вкусного введения в предмет дадите Адвансед-курс? Для тех, кто в английском не силен или просто… туповат :)))
    Очень хотелось бы освоить данный продукт.

  • Njordy

    Я для этого раньше пользовался iDeskCal. Платной. Потом связался с разработчиком насчет её перевода — он согласился и выслал «тексты» + побещал лицензию подарить :)
    Сделал ему перевод, отправил, а он начал меня игнорить. И ни лицензии, ни русского перевода (ну хоть что-нибудь одно, я не жадный). Такие дела. // потом было обновление, где включили ещё какой-то ин.язык, значит у дяденьки дела с этим нормально шли. Не знаю, что уж и думать…

    Спасибо за статью, не знал о такой штуке. Выглядит даже красивее, чем у iDeskCal! :)