Skip to content

boundlessend/clippy

Repository files navigation

иконка Clippy Mac

Clippy Mac

похоже, вам нужен скрепыш. он уже в доке

CI macOS Swift license

Clippy Mac - небольшое приложение для macOS, которое возрождает легендарного скрепыша. Персонаж живёт в доке анимированной иконкой; левый клик по нему - и рядом всплывает факт в речевом баллоне. Нативный Swift, ноль зависимостей.

Возможности

  • анимированная иконка в доке - приложение всегда в доке, и выбранный персонаж анимируется там плавной петлёй «туда-сюда», которая отдыхает между всплесками и иногда сама показывает жест.
  • факт по клику - левый клик по иконке в доке показывает новый факт в облачке прямо у иконки.
  • облачко с учётом дока - баллон растёт в высоту под длину текста (ширина фиксированная), встаёт у иконки (по курсору на иконке), а хвостик смотрит в сторону дока, где бы док ни стоял (внизу / слева / справа).
  • меню дока - правый клик по иконке: Показать факт / Показать жест / Жесты (выбрать конкретный) / Персонаж (выбрать) / Случайный персонаж / Настройки… / О программе.
  • кормление файлами - перетащите файл на иконку в доке, и персонаж отреагирует; при первом кормлении спросит, отправлять ли файлы в Корзину (меняется в настройках).
  • бережёт батарею - idle-анимация отдыхает между всплесками и замирает при блокировке экрана или сне дисплея; опциональный тумблер также ставит паузу в режиме энергосбережения.
  • персонажи - Clippy и ещё пятеро в комплекте (Merlin, Genie, Bonzi, Links, Rover), плюс любой свой персонаж из папки Agents (подпапка с agent.json + map.png); переключение в настройках, перебор из меню дока или случайный при запуске. Многослойные спрайты композитятся, поэтому полноценные персонажи Microsoft Agent рисуются правильно.
  • факты по персонажу - у каждого персонажа свои факты. У Clippy - ~500 реплик в его характере; свой персонаж показывает факты, только если положить ему tips.json, иначе ничего не всплывает.
  • источники контента - кроме локальных фактов - провайдеры Ollama / Claude / RSS / Википедия «В этот день» с автоматическим фолбэком на локальный.
  • звук - оригинальная озвучка анимаций (по умолчанию выключена).
  • автозапуск - при входе в систему (объекты входа macOS через SMAppService).
  • о программе - панель с версией приложения.

Установка

из релиза (готовый .dmg)

  1. Скачайте ClippyMac.dmg со страницы Releases.
  2. Откройте образ и перетащите ClippyMac.app в Applications.
  3. Приложение не подписано Developer ID, поэтому macOS блокирует первый запуск. Обход (один раз, любой способ): Системные настройки -> Конфиденциальность и безопасность -> «Открыть всё равно» (кнопка появляется после первой попытки запуска); либо в Терминале xattr -dr com.apple.quarantine /Applications/ClippyMac.app; на старых macOS также работает правый клик по .app -> «Открыть».

из исходников

Собрать .dmg самому:

./scripts/build-dmg.sh
open build/ClippyMac.dmg

Или запустить прямо из дерева проекта:

swift run

Требуется macOS 13+ и Xcode 15+ (Swift 5.9+); собирается на GitHub Actions под macOS 14.

Источники контента

Источник выбирается в настройках, там же поля провайдеров (ключ Claude хранится в Keychain, а не открытым текстом).

  • Локальные советы - из коробки: ~500 реплик скрепыша, категории переключаются в настройках.
  • Ollama - запущенный ollama serve и модель; адрес и модель задаются в настройках (или через CLIPPY_OLLAMA_URL / CLIPPY_OLLAMA_MODEL).
  • Claude - ключ API вставляется в настройках (или ANTHROPIC_API_KEY).
  • RSS - адрес ленты в настройках (или CLIPPY_RSS_URL).
  • Википедия «В этот день» - из коробки: историческое событие на сегодняшнюю дату (русская Википедия), без ключа.

Разработка

Проверка логики без GUI (парсинг спрайтов, кроп кадров, branching, звуки, позиция облачка, контент):

CLIPPY_SELFTEST=1 swift run

Примечание: swift run запускает голый бинарь без Info.plist, поэтому App Transport Security режет Ollama по http://localhost. Claude / RSS / Википедия (https) работают в любом случае; чтобы погонять Ollama, соберите приложение (./scripts/build-dmg.sh) и запустите .app.

Импорт персонажа ClippyJS (его map.png + agent.js + опц. sounds-mp3.js) в папку Agents, затем выбор в настройках:

python3 scripts/import-clippyjs.py <папка-персонажа-clippyjs> [Имя]

План и бэклог - в PLAN.md.

Credits & assets

  • спрайты, тайминги анимаций и звуки взяты из ClippyJS (MIT), которые в свою очередь происходят из Microsoft Agent (персонаж «Clippit»)
  • идея desktop-агента и часть фич вдохновлены Cosmo/Clippy

Спрайты и звуки остаются интеллектуальной собственностью правообладателей и включены для личного некоммерческого использования. Лицензия проекта BSD 3-Clause покрывает только исходный код.

Лицензия

BSD 3-Clause - на исходный код. По ассетам см. раздел выше.

About

скрепыш для macOS: живет в доке, по клику дает факт

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors