МакЦентр: Apple компьютеры, iPod, полиграфическое оборудование, новости, обзоры, новинки мира Mac
Кулинарная книга для правого клика [ 25 октября, 2007 г ]
Обзор утилиты OnMyCommand. Часть вторая

Во второй части обзора рассматривается написание более сложных команд, хотя создавать их также просто, как и примеры из первой части статьи.

Загрузить утилиту OnMyCommand

Пример 4: Быстрый запуск избранных программ и веб-страниц

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

Откроем редактор OMCEdit и создадим новый пустой пункт. Используя юниксовую команду open с ключом -a, укажем название нужной программы, например:

open -a terminal

Теперь устанавливаем другие параметры команды:

Activation Mode: Always

Name of Submenu: Запустить утилиту...

Новая команда для запуска Терминала:

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

Новое подменю с подручными утилитами:

Точно таким же образом можно сделать закладки для часто посещаемых веб-страниц или документов. При их открытии будут использоваться программы, назначенные данным типам файлов по умолчанию. Примеры таких команд:

open http://maccentre.ru

или

open ~/documents/work.doc

Чтобы работать с именами, которые содержат пробелы, нужно выделять их кавычками, например:

open -a "Disk Utility"

Режим Always имеет одно неприятное свойство - именно благодаря своей повсеместности команды с таким методом будут отображаться не только в Finder, но и в других приложениях, порой даже в самых неожиданных местах. Вот, например, все смешалось в окне Adium: cмайлы и системные утилиты:

Чтобы избежать подобных «издержек универсальности» можно ограничить доступность команды в некоторых приложениях. Для этого заглянем в ее свойства и откроем вкладку Visibility. Здесь можно выбрать программы, в которых пункт не должен отображаться, или же наоборот, выделить приложения, которые станут единственными хозяевами для этой команды. В данном случае, нужно добавить программу Adium в «черный список» для пунктов Terminal, Activity Monitor и Disk Utility - тогда они исчезнут из интерфейса мессенджера вместе с Submenu «Запустить утилиту...», где они и находятся.

Добавление фильтра по приложениям:

Пример 5: Диалоги с командой

Команды, созданные в редакторе OMCEdit, могут использовать дополнительные элементы интерфейса - диалоговые окна, с помощью которых пользователь вводит дополнительные данные в процессе работы с пунктом. Чтобы разобраться с этой возможностью, откроем свойства команд Copy to... и Move to... В списке, который предлагают нам разработчики, есть несколько вариантов таких пунктов, и все они используют дополнительные окна.

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

Открыв свойства команды Copy to..., перейдем на вкладку Input. Здесь указываются текстовые метки для сообщения и кнопок, которые могут быть отредактированы:

Message. Текст сообщения внутри окна.

Default Text. Текст, который будет отображаться в строке ввода по умолчанию. Лучше всего указать маршрут к самой используемой папке.

Cancel Text, Execute Text. Своя версия надписей на кнопках вместо Cancel и Execute.

Отредактированное диалоговое окно команды Copy to...:

Пример 6: Ресайз, как много в этом звуке!

Очень часто нам приходится изменять размеры изображений. Например, перед загрузкой цифрового снимка в интернет или пересылкой другу. Существует масса бесплатных утилит, которые позволяют выполнять групповой ресайз картинок по указанным параметрам, однако что может быть проще и быстрее, чем правый клик?

Среди команд, доступных на сайте OnMyCommand, ничего подобного нам не предлагается, поэтому придется создавать новый пункт с нуля. Во всех предыдущих примерах нами были использованы исключительно скрипты UNIX, позволяющие выполнять операции с именами и файлами.

Однако для изменения размеров фотографий этих команд недостаточно - здесь нам понадобится программа для обработки изображений, причем с поддержкой интерфейса командной строки.

Самая простая из таких утилит уже имеется в системе Mac OS X и называется sips. Используя команду sips -h в Терминале, мы можем узнать, как работать с этой программой. Согласно справочной информации, строка запуска приложения набирается в формате:

sips [image-query-functions] imagefile

Среди доступных функций нам в данном случае интересны -z и -Z. Первая позволяет указать количество пикселей по ширине и высоте, вторая - количество пикселей по большей стороне.

Если мы хотим сделать команду, которая станет универсальной для всех файлов с изображениями, то нам лучше выбрать функцию -Z, так как это позволит изменять любые картинки с сохранением пропорций ширины и высоты, независимо от их первоначальных размеров. После функции указывается ее числовое значение в пикселях, для нашего случая возьмем величину 1000. Вместо пути к файлу мы будем подставлять в строку объект __OBJ_PATH__, который сам извлекает маршрут по правому клику. Учитывая все вышеизложенное, наша команда в редакторе OMCEdit будет иметь вид:

sips -Z 1000 __OBJ_PATH__

Команда написана. Теперь остается указать ее параметры в интерфейсе редактора:

Activation Mode: File. Наша команда предназначена для работы с файлами, поэтому она не должна отображаться при щелчке на папке или рабочем столе.

Вкладка Files: Extensions. В этот список вносим расширения нужных графических форматов, чтобы команда не была доступна для файлов других типов. Если мы собираемся использовать ее для обычных файлов фотографий из цифровых мыльниц, то будет достаточно расширений JPG и JPEG.

Новая команда для ресайза изображений:

На этом создание команды завершено. По желанию, мы можем расширить ее возможности:

- Учитывая морфологическую специфику фразы «Изменить размеры изображения», при выделении сразу нескольких файлов название пункта должно выглядеть как «Изменить размеры изображений». Укажем эту опцию в строке Command Name Plural.

- Дописать к строке команды функцию -i, что позволит не только изменять размеры изображения, но и устанавливать его превью вместо стандартной иконки файла.

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

- Создать одну универсальную команду с нефиксированным значением большей стороны, позволяя указывать этот параметр каждый раз при выборе пункта меню. Для этого вместо постоянного числового значения 1000 пикселей используем объект __INPUT_TEXT__, который выводит на экран диалоговое окно с текстовой формой.

После внесения этих изменений, наша команда будет выглядеть следующим образом:

sips -Z __INPUT_TEXT__ -i __OBJ_PATH__

Также не забываем открыть вкладку Input и указать свои текстовые подписи для диалогового окна.

Использование дополнительного диалогового окна для ввода числового значения:

Команда «Изменить размеры изображений» в действии:

Когда примеры заканчиваются

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

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

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

Также OnMyCommand поддерживает язык AppleScript, который хоть и более сложен в использовании, но и более функционален. Все это делает утилиту самым универсальным решением для разработки и персонализации команд.

Когда примеры заканчиваются, наступает импровизация. Можно попробовать объединить несколько готовых команд в одну, и посмотреть, что из этого выйдет. New Date Folder Here + Put Items in New Folder = Move to New Dated Folder. Эта команда собирает выделенные файлы и папки с рабочего стола и помещает их в новую папку с указанным пользователем именем и текущей датой

mkdir __OBJ_PARENT_PATH__/""__INPUT_TEXT__""$" "$(date "+%d.%m.%y")/;

mv __OBJ_PATH__ __OBJ_PARENT_PATH__/""__INPUT_TEXT__""$" "$(date "+%d.%m.%y")/;

Новая команда Move to New Dated Folder:

Просто хорошие команды

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

Copy Path to Clipboard
Копирование маршрута выделенного файла или папки в буфер обмена. Эта команда имеет несколько вариантов, каждый из которых сохраняет путь в разных форматах. Полезная функция для терминальщиков.

Make .DMG
Создание сжатого образа из папки. Иногда удобнее, чем архивирование в ZIP.

Checksum (MD5)
Получение хэш-кода файла по MD5-алгоритму. Будет полезным инструментом в арсенале пользователей, скачивающих торренты.

Calculate &Append
Простой калькулятор. Расчет математического выражения, выделенного в тексте. Ответ дописывается в конце строки вместе со знаком «равно».

Dock Lock Toggle
Фиксация иконок в Доке. Вкл/Выкл одной командой.

Show All Files On/Off
Отображение скрытых файлов. Две разные команды.

Show Text Statistics
Подсчет количества символов, слов и абзацев в выделенном тексте. Автор обзора долгое время пользовался этой командой в редакторе Pages, пока не обнаружил, что аналогичная функция в нем уже имеется.

Delete All ".DS_Store Files"
Удаление всех скрытых файлов .DS_Store из папки и подкаталогов.

GET FREE PORN!!!
Красавица в окне Терминала:

Droplet Builder: Команды на экспорт

Красный значок этой утилиты можно увидеть в правом верхнем углу окна OMCEdit. Название инструмента не обманывает - программа создавать самостоятельные приложения-дроплеты, которые будут запускаться при перемещении на них файлов и папок. По сути, это те же самые команды для контекстного меню, только живущие независимо от CMI-плагина.

Для создания такой программы достаточно выбрать нужный пункт в списке OMCEdit и нажать кнопку Droplet. Появится новый файл, который теперь можно использовать на компьютерах, не имеющих OnMyCommand. Дроплет будет работать с файлами и папками так же, как и команда, из которой он был сделан. К примеру, если команда Move to... позволяет перемещать выбранный файл в указанную пользователем папку, то эта же операция может быть выполнена при перемещении файла на ее дроплет.

Дроплет команды Move to...:

Ложка дегтя

Подводя итоги обзора, хотелось бы написать что-то вроде «возможности OMCEdit ограничены только фантазией пользователя, а также его знанием UNIX и AppleScript». К сожалению, придется отметить, что эти «возможности» ограничены еще и багами самой утилиты, с которыми можно столкнуться в некоторых ситуациях.

Несмотря на то, что CMI-плагин работает без конфликтов с Finder и другими программами, редактор OMCEdit порой захлебывается в том наборе функций, которые сам же и предлагает. Программа явная beta, и отсутствие материальной платы за этот достаточно мощный продукт вполне объяснимо выражается в несущественном количестве ошибок. Однако не будем слишком сильно критиковать обнаруженные изъяны, вероятно, что проявляются они не на всех компьютерах одинаково.

Сторонники тезиса «бесплатное - всегда плохое» могут продолжить свои поиски среди предложений других разработчиков. Увы, но полноценных, пусть даже коммерческих, аналогов OnMyCommand автору обзора найти не удалось. Эта программа хороша даже со своими багами.

OnMyCommand и Leopard

Важный вопрос, который интересует пользователей OnMyCommand: не потеряет ли утилита своей актуальности с появлением Mac OS X Leopard? Быть может, Apple со временем выпустит специальный встроенный менеджер, который позволит редактировать контекстное меню своей новой системы таким же простым и удобным способом, как это предлагает OnMyCommand. По крайней мере, среди анонсированных чудес графического интерфейса и улучшенного инструментария для разработчиков такое нововведение представлено еще не было.

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

И это, конечно же, является непреодолимым препятствием на пути к совершенству контекстного меню. Впрочем, даже если вместе с Leopard будет предложена полноценная замена OnMyCommand, утилита по-прежнему останется востребованной среди пользователей Mac OS X 10.3 и 10.4, которые не сразу перейдут на новую платформу.

Что касается совместимости OnMyCommand с грядущей системой, то можно сказать почти наверняка - с появлением Leopard появится и новая версия утилиты. Разработчики уже провели свое детище через интерфейсы Jaguar, Panther и Tiger, завоевав признательность многих тысяч пользователей, и учитывая необходимость такой программы, вряд ли найдется причина останавливать работу над ней.

Загрузить утилиту OnMyCommand


Автор: А. Лузин

Источники: МакЦентр