Зачем могут понадобиться иконки установленных приложений? Например, для красоты и наглядности в какой-нибудь презентации. Или в дизайнерской работе для создания, скажем, печатной продукции. Или в программистских делах для создания программ-твикеров или еще чего-нибудь этакого. Или просто для аватарки, если у вас есть любимая программа и вы ассоциируете себя с ней. В общем, извлечение программных пиктограм — задача не такая и специфическая. И справиться с ней проще простого.
Хозяйке на заметку. Иконки приложений в OS X можно выковырять вручную — делается это достаточно просто. Сначала выделяете приложение в окне Finder, затем жмете клавиши command+I — в окне свойств программы, щелкаете на ее значке в самом верху и жмете клавиши копирования command+C. Потом остается запустить утилиту «Просмотр» (Preview), нажать клавиши command+N и сохранить полученную картинку, желательно в формате PNG (если нужно сохранить полупрозрачные области иконки). Естественно, так удобно делать, если нужно извлечь одну-две иконки. Если же число требуемых значков гораздо больше — лучше все-таки воспользоваться возможностями «Автоматора».
Итак, запускайте Automator, выбирайте пункт Служба (Service) в качестве типа нашего будущего процесса. В шапке, в выпадающем списке Служба получает выбранные (Service receives selected) выберите пункт файлы или папки (files or folders), а в списке рядом выберите приложение Finder. Таким образом мы ввели ограничение: наша служба будет доступна через контекстное меню только для папок и файлов и только в программе Finder — в любых других ситуациях соответствующий пункт меню виден не будет.
Теперь начнем составлять последовательность действий нашей службы.
1. Из категории библиотеки Файлы и папки (Files and Folders) перетащите действие Фильтровать объекты Finder (Filter Finder Objects). Внутри этого действия составьте правило фильтрования Тип — совпадает с — программа (Kind — is — application). Так мы отсеем все файлы и объекты, которые случайно затесались среди выделенных программ, но программами при этом не являются.
2. Теперь из категории Утилиты (Utilities) добавьте действие Запустить AppleScript (Run AppleScript), введя в этом действии такой код:
on run {input, parameters}
activate
return input
end run
Хозяйке на заметку. Действие Запустить AppleScript с таким кодом выполняет простую, но очень важную задачу: делает текущую службу активной, выводя ее окна на передний план. По какой-то причине это не происходит автоматически: допустим, следующим действием нашей службы будет отображение диалога открытия каталога — без выполнения указанного AppleScript-кода этот диалог может затеряться среди других открытых окон, что затруднит работу со службой. Попробуйте поэкспериментировать, отключив действие Запустить AppleScript и посмотрев, как при этом служба будет себя вести. Отсюда совет: если вы хотите гарантировать, что какое-либо диалоговое окно, созданное вашей службой, сразу оказывалось поверх остальных окон, применяйте действие Запустить AppleScript с таким кодом.
3. Третье действие — Запросить объекты Finder (Ask for Finder Items) из категории Файлы и папки (Files and Folders). С его помощью мы сможем впоследствии выбрать папку, куда службе следует сохранить извлеченные иконки. В свойствах действия укажите заголовок диалогового окна выбора каталога, задайте стартовую папку и укажите тип принимаемых данных — в соответствующем выпадающем списке выберите пункт Папки.
4. Теперь добавим в службу «интеллектуальное ядро» — действие Запустить shell-скрипт (Run Shell Script). Не меняя изначальных параметров действия, введите внутрь него такой код:
INPUT=("$@")
INPUTAPPS=("${INPUT [@] :0:($#-1)}")
DESTINATION=${INPUT [($#-1)] }
for APP in "${INPUTAPPS [@] }"
do
ICON=`defaults read "$APP/Contents/Info" CFBundleIconFile|sed -e 's/.icns$//'`
ICONFILE="$APP/Contents/Resources/$ICON.icns"
APPNAME=`basename "$APP" .app`
OUTFILE="$DESTINATION/${APPNAME}.png"
/usr/bin/sips -s format png "$ICONFILE" --out "$OUTFILE"
done
Если кому-нибудь интересно, в комментариях я смогу объяснить работу этого кода. Именно он получает на входе весь массив данных, отделяет пути выделенных в Файндере программ и путь к папке сохранения иконок, ищет внутри каждой программы иконку и сохраняет ее в указанном месте в формате PNG, присваивая картинкам имена соответствующих программ.
5. Если у вас установлена система визуального оповещения Growl, можно добавить последнее, пятое действие — Show Growl Notification, расположенное в категории Утилиты (Utilities). Введите заголовок (Title) и сообщение (Description), чтобы создаваемая служба могла наглядно сообщить об своем успешном выполнении.
Примерно так должна выглядеть готовая служба для извлечения иконок в русскоязычном варианте.
Все! Остается только сохранить службу под удобным для вас названием — например, Извлечь иконки из программ -- и испытать ее в действии. Открыв окно Finder, перейдите в папку Программы (Applications), выделите несколько программ и, щелкнув на выделенных объектах правой кнопкой мыши, выберите в контекстном меню команду с названием только что сохраненной службы. Спустя несколько мгновений файлы будут сохранены в указанном месте, а Growl отобразит созданное вами сообщение.
*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.
Лучшие предложения
10 предметов дешевле 500 рублей, которые должны быть в сумке
12 недорогих осенних аксессуаров, которые не дадут замёрзнуть
10 отличных шампуней, которые можно найти на «Яндекс Маркете»
Отборные скидки: выгодные предложения от AliExpress, «Яндекс Маркета», Lamoda и других магазинов
10 средств, с которыми будет проще ухаживать за секс-игрушками
10 вещей с тыквами и в виде тыквы, чтобы уютно «затыквиться» на всю осень
Выгодно: кроссовки adidas Originals со скидкой 54%
Список покупок: 10 товаров с AliExpress для стильного оформления детской
Молодые художники получат возможность выставить работы в Третьяковской галерее
Будущее на зарядке. Что нужно знать об электрокарах
Розовый йети и ванная будущего: как прошёл конкурс для молодых дизайнеров Outstanding Design Talent Call
Как семье с детьми купить квартиру: 5 мер поддержки, на которые вы можете рассчитывать