Добавление кнопок в панель инструментов Finder?
Dropbox имеет возможность добавить кнопку на панель инструментов Finder. Он даже появляется в окне "Настроить панель инструментов...".
Я не могу найти документацию о том, как это делается. Кто-нибудь знает, как это сделать, или кто-нибудь может указать мне на какую-то документацию или образец кода?
ИЗМЕНИТЬ ОДИН:
Я предполагаю, что начало будет найти местоположение существующих значков и любой связанный код.
Я заметил, что Dropbox имеет файлы в Library/DropboxHelperTools/Dropbox_u501, называемые mach_inject_bundle_stub.bundle и FinderLoadBundle, которые могут делать магию. Dropbox также помещает значок "tick" на значки Finder. Этот код может быть задействован: github.com/rentzsch/mach_star
ИЗМЕНИТЬ ДВЕ:
Разговор о Dropbox от Rian Hunter о процессе здесь, примерно в 15:30
http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-how-dropbox-did-it-and-how-python-helped-4896698
В окне DropboxBundle в Dropbox_u501 отображаются значки и некоторый скомпилированный код. Код предполагает, что автор Rian Hunter: http://twitter.com/timeserena
У Rian есть своя версия кода Mach Star на его github - https://github.com/rianhunter/mach_star - это кажется намного старше
ИЗМЕНИТЬ ТРЕХ
Несколько недель назад в Стэнфорде была "Семинар по внедрению кода", в котором http://stanfordacm.com/past/ - размещен Rian. Если у кого есть заметки, пожалуйста, дайте мне знать!
Ответы
Ответ 1
Dropbox использовал недокументированную магию. Там официально не поддерживается способ сделать это; самое близкое, что вы можете получить без обратной инженерии, Services.
(Обновление: по состоянию на macOS 10.11, что делает Dropbox, больше не существует. System Integrity Protection теперь предотвращает ввод кода в системные процессы, такие как Finder.)
Ответ 2
Вы можете использовать Finder Sync расширение приложения (Начиная с OS X v10.10).
Расширение Finder Sync может:
- Добавить, удалить и обновить значки и метки на элементах в контролируемой папке.
- Отображение контекстного меню, когда пользователь Control-click элемент внутри контролируемой папки.
- Добавить пользовательскую кнопку на панель инструментов Finders.
Ответ 3
Rian talk в PyCon 2011 (на blip.tv) не объясняет ничего больше, чем "Мы реверсировали Finder". Хотя материал mach_star ценен, он по-прежнему не объясняет, как получить значок боковой панели. И в Стэнфордском учебном семинаре "Code Injection Workshop" не было размещено никакого контента об этом методе.
У меня есть nm'd и class-dump'd оба пакета, которые Dropbox устанавливает для каждого пользователя в /Library/DropboxHelperTools, а вывод обеспечивает хорошее понимание. Если я вернусь к этому, я закончу свое исследование и опубликую его. Скорее всего, это не будет в течение некоторого времени, поэтому здесь, надеясь, что это подталкивание поможет кому-то еще.
Ответ 4
Легким промежуточным ответом, который может быть достаточно для некоторых людей, является просто создание значков, которые выглядят как кнопки.
например. Я создал "новый текстовый файл здесь" и "новые значки здесь" для моего Finder:
![enter image description here]()
Этот метод можно найти здесь.
Недостатком является то, что они должны быть квадратными и не иметь анимаций/меню или отображаться в "настройке панели инструментов" и т.д.