Skip to content

Автоматизация (AppleScript и Быстрые команды)

Автоматизация здесь работает в обе стороны.

Наружу: Peach Commander поддаётся сценариям, так что им можно управлять из AppleScript и из приложения «Быстрые команды». Несколько основных глаголов позволяют сценарию перемещаться по панелям, выделять файлы по маске, копировать или перемещать текущее выделение и выполнять любую команду Peach Commander по её id — теми же действиями, что используют меню, так что шаг из сценария ведёт себя как ручной. Об этом остальная часть страницы.

Внутрь: Peach Commander также может выполнить ваш сценарий — AppleScript или JavaScript — и поместить его в меню, на кнопку или на клавишу. Для этого нужен подключаемый модуль Scripting, который поставляется отключённым; см. Выполнение своих сценариев ниже.

Чтобы повторять последовательность действий с файлами, а не одно, см. Макросы.

Просмотр словаря

  1. Откройте Редактор скриптов (в /Applications/Utilities).
  2. Выберите Окно ▸ Библиотека, затем дважды щёлкните Peach Commander (добавьте его кнопкой +, если его нет в списке).
  3. Откроется словарь со списком команд и свойств, приведённых ниже.

При первом управлении 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.

Это подключаемый модуль, и он поставляется отключённым, потому что запуск программы по вашему выбору умеет всё, что умеет остальная часть приложения, и ещё несколько вещей, которых не покрывает ничто из неё. Два переключателя, оба выключены, пока вы их не поставите:

  1. Конфигурация ▸ Модули… — включите Scripting.
  2. Настройки ▸ ИИ — включите Разрешить выполнение сценариев. Это на той странице потому, что разрешение того же рода, что и оболочка ассистента, и эти два идут вместе.

Затем положите сценарий в 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 — однооконное приложение, поэтому сценарии нацелены на две панели этого окна.