iCal на рабочем столе: GeekTool + iCalBuddy

TL;DR
На пути к более организованной жизни я искал способ не только быстро добавлять события в iCal, но и иметь их всегда под рукой. Вместо открытия отдельного приложения логично вывести список задач и предстоящих событий прямо на рабочий стол — тогда достаточно сочетания клавиш (например, Command + F3 или Show Desktop), чтобы увидеть всё необходимое.
Это решение опирается на две бесплатные утилиты:
- GeekTool — плагин для macOS, который позволяет размещать вывод команд и файлов на рабочем столе.
- iCalBuddy — командная утилита для запроса базы данных календаря macOS.
iCalBuddy идеально подходит для сценариев автоматизации: он возвращает события и задачи календаря в текстовом виде, что делает его удобным для интеграции с GeekTool.
Что нужно
- Mac с macOS и доступом к App Store или установочным файлам GeekTool.
- iCalBuddy: последняя версия включает файл install.command — достаточно дважды щёлкнуть, чтобы запустить установку в Terminal и затем нажать любую клавишу для продолжения.
- Право запуска shell-команд и доступ к базе календаря (разрешения конфиденциальности при первом обращении).
Установка iCalBuddy
- Скачайте iCalBuddy (или возьмите из репозитория проекта). Новые сборки обычно содержат файл install.command.
- Дважды щёлкните install.command. Откроется Terminal; следуйте подсказкам, нажмите любую клавишу для продолжения, либо Ctrl+C для отмены.
- При первом запросе о доступе к календарю macOS подтвердите его в системных настройках (Конфиденциальность & Безопасность).
Примечание: ранее установка требовала ручной работы через терминал, но install.command облегчает процесс для большинства пользователей.
Настройка GeekTool
- Откройте System Preferences → GeekTool (или приложение GeekTool, если у вас standalone PrefPane).
- Перетащите «Shell» geeklet на рабочий стол.
- Вставьте команду iCalBuddy в поле Command для этого geeklet.
- Настройте шрифт, цвет и позицию geeklet прямо из панели свойств.
- При необходимости добавьте несколько shell-geeklet-ов: один для задач, другой — для событий на неделю.
Базовая команда iCalBuddy
Это самая простая отправная точка:
/usr/local/bin/icalBuddy ******Звёздочки — место для строк с параметрами и фильтрами. Ниже — рабочие примеры, которые легко вставить в GeekTool.
Примеры команд (копируйте и вставляйте)
Показать незавершённые задачи (to-do):
/usr/local/bin/icalBuddy --excludeTaskProps "notes" -nc uncompletedTasks | sed -e "s/*/--/" | sed -e "s/!/!!/"Показать события на ближайшие 7 дней:
/usr/local/bin/icalBuddy -nc eventsToday+7 | sed -e "s/*/--/" | sed -e "s/!/!!/"Пояснение частей команд:
- –excludeTaskProps “notes” — убрать поле “notes” у задач, чтобы не захламлять вывод.
- -nc — не показывать имя календаря рядом с событием.
- sed -e “s//–/“ — заменить символ на – перед элементами для единообразного внешнего вида.
- sed -e “s/!/!!/“ — выделить просроченные элементы, удвоив восклицательные знаки.
- eventsToday+7 — отобразить события за сегодня и следующие 7 дней.
Эти строки были взяты из пользовательских обсуждений iCalBuddy — кредит авторам модификаций.
Красивый внешний вид (стилизация)
Я провёл больше времени на настройку внешнего вида, чем на функциональность. Несколько рекомендаций:
- Шрифт: Gill Sans (Regular/Thin) выглядит аккуратно на стандартных обоях macOS.
- Цвет и прозрачность: настройте цвет текста, чтобы он контрастировал с обоями; в GeekTool можно сделать фон прозрачным.
- Позиционирование: разместите списки в углах или разделите экран на зоны — один geeklet для задач, другой для событий.
- Обновление: в свойствах shell-geeklet укажите интервал обновления (например, каждые 5–15 минут), чтобы информация оставалась свежей.
Тонкая настройка и примеры команд-расширений
Ниже — полезные варианты команд для разных сценариев.
Показать только просроченные задачи:
/usr/local/bin/icalBuddy -np "-" -nrd -ea -b -f -ps "" -f -tf "" -nrd overdueTasksПоказать события только сегодня (короткий формат):
/usr/local/bin/icalBuddy eventsToday --format "%H:%M %title" -ncУчтите: форматирование и флаги iCalBuddy зависят от версии. Для подробностей используйте:
man icalBuddyили изучите справочные материалы, которые шли вместе с установочным пакетом.
Альтернативные подходы (когда этот метод не подходит)
- Notification Center / виджеты macOS: удобны для быстрого просмотра, но занимают область Центра уведомлений.
- Приложения-замены календаря (например, сторонние клиенты) иногда имеют свои виджеты и статичные панели.
- Übersicht и другие движки для виджетов на рабочем столе: дают больше гибкости (HTML/CSS/JS), но требуют знания веб-технологий.
Если вам нужен графический, интерактивный или синхронизированный интерфейс с напоминаниями, стоит рассмотреть специализированные приложения.
Мини-методология: шаги от настройки до повседневного использования
- Установите iCalBuddy и подтвердите доступ к календарю.
- Установите GeekTool и создайте shell-geeklet.
- Вставьте базовую команду iCalBuddy в поле Command.
- Настройте интервал обновления, шрифт и цвет.
- Тестируйте: добавьте тестовое событие/задачу и проверьте появление на рабочем столе.
- Подберите финальный стиль и зафиксируйте расположение.
Чеклист для ролей
Обычный пользователь:
- iCalBuddy установлен и запускается.
- GeekTool отображает текст на рабочем столе.
- Текст читается (проверить шрифт и размер).
- Обновления происходят в приемлемом интервале.
Системный администратор / power-user:
- Утилита размещена в /usr/local/bin и доступна для всех нужных пользователей.
- Проверены разрешения доступа к календарю.
- Настроены резервные копии конфигураций GeekTool.
Критерии приёмки
- На рабочем столе отображаются актуальные незавершённые задачи и события на ближайшую неделю.
- Просроченные элементы визуально выделяются.
- Интервал обновления не превышает допустимого для конкретного пользователя (например, 5–15 минут).
Простая диаграмма принятия решения (Mermaid)
flowchart TD
A[Нужно ли постоянное отображение календаря?] -->|Да| B[Использовать GeekTool + iCalBuddy]
A -->|Нет| C[Рассмотреть виджет Центра уведомлений]
B --> D{Требуется интерактивность?}
D -->|Да| E[Использовать стороннее приложение или Übersicht]
D -->|Нет| F[Оставить статический вывод iCalBuddy]Набор команд-шпаргалка
- Список задач (незавершённые):
/usr/local/bin/icalBuddy --excludeTaskProps "notes" -nc uncompletedTasks | sed -e "s/*/--/" | sed -e "s/!/!!/"- События на 7 дней:
/usr/local/bin/icalBuddy -nc eventsToday+7 | sed -e "s/*/--/" | sed -e "s/!/!!/"- Короткий формат (только время и заголовок):
/usr/local/bin/icalBuddy eventsToday --format "%H:%M %title" -ncКраткий глоссарий
- Geeklet — элемент GeekTool, который выводит текст/изображение/скрипт на рабочем столе.
- iCalBuddy — утилита командной строки для чтения базы данных календаря macOS.
- sed — утилита для замены и обработки текста в потоке вывода.
Тестовые случаи (управляемая проверка)
- Добавить тестовую задачу с текстом “Тест123” — проверить, что она появляется в списке незавершённых задач.
- Создать событие на завтра и убедиться, что оно показано в разделе событий на 7 дней.
- Пометить событие просроченным — убедиться, что оно визуально выделяется (например, двойной восклицательный знак).
Риски и простые меры снижения
- Проблема: iCalBuddy не видит календарь — проверьте системные разрешения (Конфиденциальность & Безопасность).
- Проблема: GeekTool не обновляет вывод — проверьте интервал обновления и работоспособность самой команды в Terminal.
Сообщества и вдохновение
Существует несколько сообществ пользователей GeekTool, которые демонстрируют и обмениваются дизайнами рабочего стола. Если вы настроите интересный вид, поделитесь им — это быстрый способ получить полезные идеи по типографии и компоновке.
Итог
Вывод событий и задач iCal прямо на рабочий стол — простой, бесплатный и гибкий способ держать рабочий план под рукой. GeekTool + iCalBuddy подходит тем, кто предпочитает минималистичный, «всегда на виду» подход. При желании можно расширить решение через Übersicht или сторонние приложения, если требуется интерактивность или более сложный визуальный дизайн.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента