Автоматизация (AppleScript и Быстрые команды)
Автоматизация здесь работает в обе стороны.
Наружу: Peach Commander поддаётся сценариям, так что им можно управлять из AppleScript и из приложения «Быстрые команды». Несколько основных глаголов позволяют сценарию перемещаться по панелям, выделять файлы по маске, копировать или перемещать текущее выделение и выполнять любую команду Peach Commander по её id — теми же действиями, что используют меню, так что шаг из сценария ведёт себя как ручной. Об этом остальная часть страницы.
Внутрь: Peach Commander также может выполнить ваш сценарий — AppleScript или JavaScript — и поместить его в меню, на кнопку или на клавишу. Для этого нужен подключаемый модуль Scripting, который поставляется отключённым; см. Выполнение своих сценариев ниже.
Чтобы повторять последовательность действий с файлами, а не одно, см. Макросы.
Просмотр словаря¶
- Откройте Редактор скриптов (в
/Applications/Utilities). - Выберите Окно ▸ Библиотека, затем дважды щёлкните Peach Commander (добавьте его кнопкой +, если его нет в списке).
- Откроется словарь со списком команд и свойств, приведённых ниже.
При первом управлении Peach Commander из сценария macOS попросит разрешить это (Системные настройки ▸ Конфиденциальность и безопасность ▸ Автоматизация). Разрешите один раз, и в дальнейшем сценарии выполняются без запроса.
Что можно прочитать¶
| Свойство | Значение |
|---|---|
active folder |
POSIX-путь папки активной панели. |
inactive folder |
POSIX-путь папки другой панели. |
selection paths |
Выбранные элементы в активной панели (или элемент под курсором). |
Команды¶
| Команда | Что она делает |
|---|---|
go to "<path>" [in left\|right] |
Открыть папку в панели (по умолчанию — в активной панели). |
select "<mask>" |
Выбрать элементы в активной панели по маске с подстановочными знаками, например *.pdf. |
copy items to "<folder>" |
Скопировать выборку активной панели в папку. |
move items to "<folder>" |
Переместить выборку активной панели в папку. |
run command "<id>" |
Запустить любую команду по её идентификатору, например cm_PackFiles. |
Копирование и перемещение используют ту же очередь фоновых передач, что и F5/F6, поэтому индикатор выполнения и любые запросы на перезапись появляются точно так же, как и при ручной операции.
Пример¶
tell application "Peach Commander"
go to "~/Downloads" in left
select "*.pdf"
copy items to "~/Documents/PDFs"
return selection paths
end tell
Использование из «Быстрых команд»¶
В приложении Быстрые команды добавьте действие Запустить AppleScript и вставьте сценарий, подобный приведённому выше. Это позволяет встроить шаг Peach Commander в более крупную быструю команду — например, запускаемую по изменению папки или горячей клавише.
Выполнение своих сценариев¶
Другая сторона: ваш сценарий, выполняемый Peach Commander.
Это подключаемый модуль, и он поставляется отключённым, потому что запуск программы по вашему выбору умеет всё, что умеет остальная часть приложения, и ещё несколько вещей, которых не покрывает ничто из неё. Два переключателя, оба выключены, пока вы их не поставите:
- Конфигурация ▸ Модули… — включите Scripting.
- Настройки ▸ ИИ — включите Разрешить выполнение сценариев. Это на той странице потому, что разрешение того же рода, что и оболочка ассистента, и эти два идут вместе.
Затем положите сценарий в scripts/ внутри папки конфигурации — Команды ▸ Открыть папку сценариев приведёт вас туда и в первый раз оставит там пример. Файл .applescript, .scpt или .jxa в этой папке и есть сценарий; регистрировать ничего не нужно.
Что получает сценарий¶
Состояние панелей приходит через окружение, поэтому обычный случай не требует Apple events и никакого запроса разрешений:
| Переменная | Значит |
|---|---|
PC_ACTIVE_DIR |
Папка активной панели |
PC_TARGET_DIR |
Папка другой панели |
PC_CURSOR_NAME |
Файл под курсором |
PC_SELECTION_COUNT |
Сколько объектов выделено |
PC_SELECTION_FILE |
Текстовый файл с одним выделенным путём в строке (отсутствует, если ничего не выделено) |
set here to system attribute "PC_ACTIVE_DIR"
return "The active panel is showing " & here
Всё, что выходит за эти рамки, идёт через само приложение, с глаголами выше — так что две половины дополняют друг друга.
Поместить сценарий на кнопку или клавишу¶
Каждый сценарий становится командой с именем plugin.script.run.<имя>, где <имя> — имя файла без расширения (пробелы и точки становятся дефисами). Этот id работает везде, где работает id cm_*: в панели кнопок, в usercmd.ini, в файле .mnu и в Конфигурация ▸ Редактировать сочетания клавиш….
Как выполняется сценарий и ограничение времени¶
По умолчанию сценарий выполняется как отдельный процесс, а значит ему можно задать ограничение времени и остановить его при превышении — тридцать секунд, если не указано иное. Сценарий может выбрать выполнение внутри приложения, что позволяет ему вернуть структурированное значение и оставляет его скомпилированным между запусками, но тогда ограничения времени нет: сценарий, попавший в цикл, держит приложение. Укажите выбор в scripts.json рядом со своими сценариями:
[
{ "id": "Tidy", "fileName": "Tidy.applescript", "title": "Tidy Downloads",
"language": "AppleScript", "mode": "subprocess", "timeoutSeconds": 60 }
]
Запись нужна только тому, что отличается от значений по умолчанию; файл без записи получает собственное имя как заголовок, выполняется как отдельный процесс и останавливается через тридцать секунд.
Для ассистента¶
При включённом модуле и заданной настройке ассистент получает run_applescript, run_jxa и check_script. Каждый из них показывает вам точный текст сценария и ждёт вашего одобрения, прежде чем что-либо выполнится, и ни один из них никогда не предлагается внешнему агенту через MCP.
Примечания¶
- Идентификатор команды, передаваемый в
run command, — это тот же идентификаторcm_*, что показан в обозревателе команд (см. Меню «Запуск» и пользовательские команды). - Сценарии всегда действуют на активной панели; сначала используйте
go to … in left/in right, если вам нужна конкретная сторона. - Peach Commander — однооконное приложение, поэтому сценарии нацелены на две панели этого окна.