Комментарии 75
Я думаю что скорее эти Skype, Adium и Transmission сделают нормальную поддержку центра уведомлений чем growl сделает такое.
Тем более что последние два — опенсорс, потенциально можно поучаствовать :)
Тем более что последние два — опенсорс, потенциально можно поучаствовать :)
+2
Совершенно согласен. Благодаря тому, кстати, что последние оказались опенсурсными, мне и удалось написать эту штуку, изучая то, как именно дергается гроул в этих приложениях.
Но покуда поддержки нет… :-)
Но покуда поддержки нет… :-)
0
Transmission же отправляет сообщения в центр
0
Если это обновление вышло менее месяца назад — то я его не приметил. Когда я начинал разработку в исходниках Transmission еще о NC не было ни строчки, и, соответственно, у меня центр был пуст. Но я смотрел stable ветку. Сейчас (проверил) нотификации Transmission v2.61 у меня идут через мой плагин, а не на прямую.
0
хм. у меня такой поддержки не наблюдается, и вроде бы последняя версия установлена. Поискал — есть ветки в соотв. багтреках (и про одну, и про вторую), в которых ведется обсуждение NC, причем достаточно давно. Может быть это есть в бета-версиях? Т.к. насколько я помню, ограничения на использование локальных уведомлений только программами с AppStore нет (есть только на push-уведомления).
0
Скорее всего да, это nightbuild'ы, так называемые. Я туда не суюсь. :)
Локальные и push — это штука есть только в iOS. На MacOSX все уведомления только локальные. Пока. Я не помню в документации (которая, на мое удивление, весьма скудна была месяц назад) о push не было ни слова.
Локальные и push — это штука есть только в iOS. На MacOSX все уведомления только локальные. Пока. Я не помню в документации (которая, на мое удивление, весьма скудна была месяц назад) о push не было ни слова.
0
Есть, есть :) На WWDC еще были по-моему какие-то полезности…
0
Последняя бета Adium уже использует NC при отсутствии Growl, проверено лично, все работает.
+1
Поддерживаю.
А вот скайп что-то не хочет пока, увы.
А вот скайп что-то не хочет пока, увы.
0
Ага. 1.5.3 (stable) тоже. Удивительно. Правда, прям в танке живу.
С другой стороны, мой способ позволяет указать, какие нотификации нужны, какие нет, а какие прятать. (Например, если бы нотификации Connected сохранялись в NC — мне бы это очень не нравилось :) )
С другой стороны, мой способ позволяет указать, какие нотификации нужны, какие нет, а какие прятать. (Например, если бы нотификации Connected сохранялись в NC — мне бы это очень не нравилось :) )
0
Неоднократно увидел в статье новое для меня слово — «инжектор». Можно по подробнее, пожалуйста?:)
0
Code Injections (wiki) и в частности о SIMBL(wiki)
Кратко говоря это инструмент, позволяющий выполнять код внутри чужого процесса. В частности у меня инжектор используется для того, чтобы выполнить подмену методов, отвечающих за общение с Growl.
Кратко говоря это инструмент, позволяющий выполнять код внутри чужого процесса. В частности у меня инжектор используется для того, чтобы выполнить подмену методов, отвечающих за общение с Growl.
+1
Можно немного потерпеть, и не ставить SIMBL — Growl 2 должен быть уже на подходе.
0
Я сам жду Growl 2. Но есть основания полагать, что они не сделают «каждому приложению — своя панелька и настройки в NC». Т.е будет выглядить так-же, как это выглядит у Hiss.
0
У меня сейчас слипаются глаза, и чего-то, может, я не понимаю, но возник такой вопрос: зачем надо делать прокси-сервис между Гроулом и Центром уведомлений, если это так непросто? Гроул – опенсорсный, разве нельзя взять и переделать его отображение так, чтобы уведомления уходили в центр уведомлений? У них исходники, конечно, так себе (Growl.app я так и не смог собрать, а вот HardwareGrowler собрал и даже локализовал) – если подозрение, что намеренно код подпорчен, чтобы каждый не собирал себе, продавать ведь в АппСторе тоже надо… То есть идея в создании модифицированного Гроула, который бы ставился вместо «родного».
Сам пока сижу на старом гроуле (который в системных настройках) + Hiss. Больше всего неудобств доставляет то, что по уведомлению нельзя быстро перейти к приложению.
Сам пока сижу на старом гроуле (который в системных настройках) + Hiss. Больше всего неудобств доставляет то, что по уведомлению нельзя быстро перейти к приложению.
0
Не знаю, зачем делать проксю. Я и не делал. Мой плагин полностью заменяет код, предназначенный для работы с гроул, на код, для работы с NC, в самих приложениях. Он не весит отдельным процессом и ничего на себя не берет, в отличии от Hiss :). Наличие гроула не требуется (однако если его нет, то, например, скайп спешит сбросить его из настроек при перезапуске).
А переписывание самого гроула приведет к тому же, что нам показывает Hiss (это изза специфики работы NC). Тут два варианта — или хакать NC и Гроул (оба сразу. Мало того, что первый не задокументирован как полагается, так еще и закрыт, и лежит в одном из толстенных фреймворков, откуда его дампить крайне не приятно), или приложения. Я пошел по второму пути. В результате нотификации отправляются напрямую NC, без посредников. Ну и соответственно по тыку происходит переход, если он должен был произойти.
А переписывание самого гроула приведет к тому же, что нам показывает Hiss (это изза специфики работы NC). Тут два варианта — или хакать NC и Гроул (оба сразу. Мало того, что первый не задокументирован как полагается, так еще и закрыт, и лежит в одном из толстенных фреймворков, откуда его дампить крайне не приятно), или приложения. Я пошел по второму пути. В результате нотификации отправляются напрямую NC, без посредников. Ну и соответственно по тыку происходит переход, если он должен был произойти.
0
т.е. имеется практически готовый патч для adium и transmission!!! А нет желания попросту выслать код разработчикам?
0
Это не тянет на полноценный патч, это скорее универсальный костыль. И код «патчится» во время рантайма. (Т.е оригинальный код успевает выполниться, и приложение успевает зарегистрироваться в гроул, и даже может отправить туда нотиф). Код почти тривиальный и для разработчиков пользы не несет :)
0
Не совсем понимаю. Если это не прокси, а замена Гроула и работает даже без самого гроула, то зачем нужны инжекты и SIMBL, как приложения регистрируются в гроуле (при его отсутствии), почему они не регистрируются сразу в CN, раз он заменяет гроул?
0
Ну тык приложения же нужно *заставить* делать нужное, как-то. Это же какой-то код, и он где-то должен исполнятся. В нашем случае код работы с NC *вставляется* в приложения. Регистрация с гроулом была написана самими разработчиками приложения (очевидно :) ), и она полезна тем, что предоставляет список типов нотификаций (тот самый список, который видно в настройках CentralNotifier у приложений).
Регистрироваться в Notification Center не нужно (там, на момент 13.08.12) не было никакой регистрации. Приложение просто шлет нотификацию, а NotificationCenter сам догадывается, кто и что ему прислал. Регистрация с гроулом (какбы регистрация, на самом же деле гроул, например, выключен) позволяет получить этот список, о котором говорил выше, и получить чуть больше контроля над нотификациями.
Думаю самый быстрый способ понять, как это работает, это скачать исходник и посмотреть: кода, как впрочем и коментариев, там мало, и все достаточно прозрачно выглядит :)
Регистрироваться в Notification Center не нужно (там, на момент 13.08.12) не было никакой регистрации. Приложение просто шлет нотификацию, а NotificationCenter сам догадывается, кто и что ему прислал. Регистрация с гроулом (какбы регистрация, на самом же деле гроул, например, выключен) позволяет получить этот список, о котором говорил выше, и получить чуть больше контроля над нотификациями.
Думаю самый быстрый способ понять, как это работает, это скачать исходник и посмотреть: кода, как впрочем и коментариев, там мало, и все достаточно прозрачно выглядит :)
0
В каждом приложении, которое умеет слать уведомления в Growl, есть гроуловый фреймворк, в котором бинарник гроула на 96кб. Что внутри, не знаю, но кажется, это готовый модуль для отправки уведомлений в гроул. То есть приложения сами шлют сообщения гроулу, а он их показывает. Почему нельзя сделать модифицированные гроул, который принимаемые сообщения просто пересылал бы дальше в системный NC?
Зачем что-то внедрять в приложение, если оно уже внедрено?
Я реально пока просто не понимаю, каким образом происходит обмен собщениями — гроул сам опрашивает зарегистрированные приложения, или приложения каким-то образом уведомляют гроул. В исходниках копаться сложно, так как от objC кружится голова ))
Зачем что-то внедрять в приложение, если оно уже внедрено?
Я реально пока просто не понимаю, каким образом происходит обмен собщениями — гроул сам опрашивает зарегистрированные приложения, или приложения каким-то образом уведомляют гроул. В исходниках копаться сложно, так как от objC кружится голова ))
0
Модифицировать сам гроул нельзя, потому что он у всех разных версий, а у кого-то вообще жестко залинкован в бинарник (да, есть и такие). Более того, патчевание (есть такое слово?) бинарника приведет к потере подписи кода, из-за чего KeyChain перестанет выдавать приложению ключи. И это жестко нарушает лицензию. Вообще изменять бинарник это Bad.
ЗЫ: Да-да, у каждого приложения свой Growl.Framework и, получается, нужно каждый патчить, при том разный патч под разные версии. Смысл?
А модифицированный гроул == Hiss. Результат такой отправки виден на 1 скриншоте. Отправили нотификацию из процесса гроула — получите нотиф от его же лица. По другому — только редактируя (так же, как я, инжектируясь, но уже в сам Notification Center) поведение самого NC (что собственно и сделали разработчки Bark, см внизу коментариев).
ЗЫ: Да-да, у каждого приложения свой Growl.Framework и, получается, нужно каждый патчить, при том разный патч под разные версии. Смысл?
А модифицированный гроул == Hiss. Результат такой отправки виден на 1 скриншоте. Отправили нотификацию из процесса гроула — получите нотиф от его же лица. По другому — только редактируя (так же, как я, инжектируясь, но уже в сам Notification Center) поведение самого NC (что собственно и сделали разработчки Bark, см внизу коментариев).
0
А потом приложение стучится к себе на сервер, ловит в себе инжект и юзеру прилетает бан.
0
Где такое видано?
0
Как бы в EULA написано: «вы не имеете права заниматься реверс-инжинирингом, модификацией и вмешиваться в работу нашего суперофигенного приложения»
0
ну если в игры Близзард инжектировать, то опасно наверное, да, но с 99% софта — пофигу.
0
Помоему maximizer инжектируется в WoW и я еще жив :D CN не будет инжектироваться, если приложение не использует гроул.
0
ну вообще было бы странно, еслиб все эти защиты ругались на системную возможность (SIMBL). То что ее используют для внедрения кода, а не по прямому назначению — уже другой вопрос.
0
Ну вообще прямое ее назначение — это и есть внедрение кода :D Сам автор для того его и писал. Кстати очень удобная штука. Например с помощью нее я научил Ecoute принимать клик мышки за даблклик, и листать список песен нормально, а не как было сделано изначально. Очень удобная штука этот SIMBL :)
0
4) SIMBL.osax -> /Library/ScriptingAdditions *
Поясните этот шаг, пожалуйста.
0
SIMBL.osax — это основной бандл SIMBL.
Проблема: SIMBL не инжектируется в приложения, если у них нет иконки в Dock. (Да, да, да, WTF). Проблема в том, что если у приложения нет в доке иконки, то это NSUIElement приложение, или в новой терминологии — Agent Application. Почти Daemon, только с гуей. И, по каким-то не ясным мне соображениям, имеет место задокументированный, но трудно находимый факт: NSWorkspace не отсылает нотификации о запуске Agent-Apps, а именно эти нотификации запуска слушает SIMBL.
Я его модифицировал и теперь слушаю старты процессов через функции Carbon.
Проблема: SIMBL не инжектируется в приложения, если у них нет иконки в Dock. (Да, да, да, WTF). Проблема в том, что если у приложения нет в доке иконки, то это NSUIElement приложение, или в новой терминологии — Agent Application. Почти Daemon, только с гуей. И, по каким-то не ясным мне соображениям, имеет место задокументированный, но трудно находимый факт: NSWorkspace не отсылает нотификации о запуске Agent-Apps, а именно эти нотификации запуска слушает SIMBL.
Я его модифицировал и теперь слушаю старты процессов через функции Carbon.
0
С Growl начинается каждый мой сеанс работы с Мак. Он всё время просит обновиться на платную версию, а снести руки не доходят.
0
У кого-нибудь есть на примете бесплатный RSS-ридер с поддержкой Notification Center?
0
В Growl 2 либе для разработчиков если в системе Growl не установлен вообще, то шлется в Notification Center. Т.е. достаточно вообще снести Growl.
0
Я перешел на ML недавно. Какой смысл в Notification center если я не вижу что появились какие-то оповещения?
0
Всмысле? Оповещение появляется в правом верхнем углу, и через n секунд прячется + издает звук, если приложение того хочет.
0
Это понятно. Я отвлекся/забил на оповещения. Как мне узнать что появились новые? Т.е. на телефоне например в баре сверху торчат иконки.
Плюс у меня при нажатии на оповещение от Sparrow письмо становится прочитанным вместо того чтобы открыть его в окне. Это зависит от приложения или во всех нажатие на попап просто закрывает его?
Плюс у меня при нажатии на оповещение от Sparrow письмо становится прочитанным вместо того чтобы открыть его в окне. Это зависит от приложения или во всех нажатие на попап просто закрывает его?
0
На телефоне не торчат иконки в баре сверху (с удивленными глазами полез смотреть на свой iPhone с iOS5). У меня около дофига нотификаций и никаких иконок нет. Сеть, время, замочек да батарейка.
И да, зависит от приложения. Разработчик так написал сам :).
И да, зависит от приложения. Разработчик так написал сам :).
0
Я могу ошибаться, но адиум нормально работает с центром уведомлений. И скайп кажется тоже.
Или я сделал какие-то магические вещи у себя на ноуте и рабочем аймаке?
Growl отключил совсем.
Или я сделал какие-то магические вещи у себя на ноуте и рабочем аймаке?
Growl отключил совсем.
+1
Хм, да, действительно — Adium 1.5.3 добавил Growl SDK 2. А по клику в нотификацию адиум выскакивает? И есть ли где-нибудь настройки, какие нотификации отображать, какие нет, и хранить их, или нет (например нотификациям Connected в центре явно не место. Отобразили и хватит)?
Что-то я в пещере прям живу, надо было месяц назад это дело выпустить, тогда было бы актуальней некуда :D
Что-то я в пещере прям живу, надо было месяц назад это дело выпустить, тогда было бы актуальней некуда :D
0
А как вы добавили в NC Facebook?
0
Попробуйте это: link.
0
спасибо! работает
правда папку ~/Library/Application Support/SIMBL/Plugins/ пришлось ручками создать…
правда папку ~/Library/Application Support/SIMBL/Plugins/ пришлось ручками создать…
0
Ого! Меня опередели, как с пряморукостью так и со скоростью! :)
Но я уверен, что в начале августа Bark'a не существовало. :) в любом случае я получил много удовольствия и знаний, создавая CN, оно того стоило :)
Но я уверен, что в начале августа Bark'a не существовало. :) в любом случае я получил много удовольствия и знаний, создавая CN, оно того стоило :)
0
Хорошие идеи всегда приходят в голову одновременно нескольким людям )
0
НЛО прилетело и опубликовало эту надпись здесь
Я думаю, что модификация одной сущности (пусть и без исходников, в случае Obj-C хвадает дампа header'ов в силу любвиКОченьSelfDesrcribingНазваниямМетодов(С) ) гораздо более пряморука, чем модификация целой оравы онных в слепую, как мне кажется :) В любом случае, думаю мой подход тоже имеет право на существование, правда требует, наверное, доработки :)
0
Как оказалось, у них допилено не до конца, и тык по нотификации приводит не к тому, к чему ожидалось. У меня это реализованно так, как того ожидает юзверь. Я отписал им с предложением помочь. Эххх. Теперь удалять все эти гроулы и возвращать обратно свой CN :)
0
Спасибо!
0
Последнее обновление Growl сделало доступным свой собтвенный прокси в notification center.
0
А нельзя никак скрывать уведомления от нотификейш-центра? Как в гроле был крестик, например.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пересаживаемся с Growl на Notification Center