Пересаживаемся с Growl на Notification Center

в 21:37, , рубрики: apple, growl, mac os x, macosx, notification center, я пиарюсь, метки: , , ,
Введение

С выходом MacOSX 10.8 общественности был представлен Notification Center, он же «Центр Уведомлений». Как только вам приходит новая почта или, к примеру, заканчивается закачка в Safari, то вы видите в правом верхнем углу всплывающее окошко с уведомлением, об этом сообщающее. Так же по свайпу двумя пальцами влево (или по хоткею) можно обнажить панель нотификаций, почти идентичную онной в iOS.

Проблема

Все было бы хорошо, да только есть одно но: еще с 2004го года все приложения используют для целей уведомления пользователя опенсурсный Growl и не спешат переходить на новую систему. В частности Skype, Adium, Transmission и многие многие другие приложения повседневного пользования.

Решение?

Hiss — одно из самых первых решений, появившихся в сети. И последнее. Hiss ловит нотификации вместо гроула и отправляет их от его имени в Notification Center, в результате чего получается не самая приятная картина:image
Как видно на скриншоте, результат не похож на ожидаемый. Так же, нет индивидуальных настроек для приложений. Вариант рабочий, но не удобный.

Решение получше

Этим летом я решил исправить положение и, не найдя каких-бы то ни было решений проблемы в интернете, кроме обещаний выпустить growl2, приступил к написанию CentralNotifier.

Что это?

Central Notifier — это маленькое приложение, которое инжектируется с помощью SIMBL во все, что движется в системе (подобно maximizer, добавляющему lion's fullscreen во все приложения, в которые возможно). Если приложение поддерживает growl, то после инжектирования все нотификации, предназначенные для growl, будут отправляться в Notification Center. В итоге имеем вот такую картину:image
А так же настройки для приложений:image

И в чем подвох?

Работать оно работает, но находится на ранней стадии разработки. У меня больше нет времени заниматься этим проектом, да и с текущими багами я прижился. Уже месяц работает без нареканий, решил поделиться с общественностью и буду очень рад, если кто-то возьмет проект под свое крыло.

Установка

1) Устанавливаем SIMBL
2) Скачиваем и распаковываем cl.ly/2l0O2w1m3v3H
3) CentralNotifier.bundle -> ~/Library/Application Support/SIMBL/Plugins/
4) SIMBL.osax -> /Library/ScriptingAdditions *
5) DoubleClick CentralNotifier-PrefPane.prefPane
6) Перезагрузка без галочки о сохранении состояния приложений
* — это измененный инжектор (что нарушает просьбу автора о переименовывании его детища при любых изменениях). Если вы хотите инжектироваться в приложения, не имеющие иконки в доке — вам он нужен. Нет — все работает и с обычным SIMBL. По любым проблемам с измененным инжектором просьба не обращаться к автору SIMBL

Исходники

Исходники лежат на GitHub. Делайте с ними что хотите, с сохранением оригинального авторства за мной.

Известные баги

1) После перезагрузки иногда приходится перезапускать все приложения, чтобы произошло инжектирование. Происходит это потому, что инжектор стартует позже самих приложений.
2) Чтобы применить настройки к нотификациям приложений, нужно их изменить в prefpane, выйти из нее и затем перезапустить само приложение.
3) Больше за месяц косяков не замечено.

А может подождать growl2?

Мое личное мнение: Или они сделают, как Hiss, или их не пустят в AppStore. Чтобы постить нотификации от лица другого приложения — надо либо инжектироваться в него (об appstore сразу можно забыть), либо делать магическое кунфу (шанс с которым пройти в тот-же appstore очень мал). Я думаю, что было бы хорошо продолжить разработку CentralGrowler, тк больше вариантов перенаправления нотификаций я не вижу.

Надеюсь, что мои наработки комунибудь да пригодятся.

Автор: aspcartman

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js