похоже, вам нужен скрепыш. он уже в доке
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). - о программе - панель с версией приложения.
- Скачайте
ClippyMac.dmgсо страницы Releases. - Откройте образ и перетащите
ClippyMac.appвApplications. - Приложение не подписано 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.
- спрайты, тайминги анимаций и звуки взяты из ClippyJS (MIT), которые в свою очередь происходят из Microsoft Agent (персонаж «Clippit»)
- идея desktop-агента и часть фич вдохновлены Cosmo/Clippy
Спрайты и звуки остаются интеллектуальной собственностью правообладателей и включены для личного некоммерческого использования. Лицензия проекта BSD 3-Clause покрывает только исходный код.
BSD 3-Clause - на исходный код. По ассетам см. раздел выше.