Это не совсем ответ на ваш вопрос, но одна проблема, с которой сталкивается ваш JXA-скрипт, заключается в том, что он задействует ВСЕ процессы (которые могут быть огромными), когда вам, вероятно, нужны только те процессы, которые являются видимыми приложениями. Итак, начнем с этого.
Вот AppleScript, чтобы получить список всех непустых имен окон, в списке CSV на одной строке, всех видимых приложений:
tell application "System Events"
set appList to (every application process whose background only is false)
set winList2 to {}
repeat with oApp in appList
set winList to (name of every window in oApp whose name is not "")
set winList2 to winList2 & (items of winList)
end repeat
end tell
set AppleScript's text item delimiters to ","
set winListText to winList2 as text
return winListText
-->All Notes,Keyboard Maestro Editor,macos - osascript is very slower than Script Editor - Stack Overflow - Google Chrome - JMichael,Untitled 2.scpt,Untitled 2
Это не должно быть так сложно конвертировать в JXA, но если вы собираетесь просто запустить его как в сценарии оболочки, используя osascript, я не вижу никакого преимущества для конвертации в JXA.
Я не знаю природу вашего рабочего процесса, но если бы это был я, я бы запустил его как файл скомпилированного скрипта (.scpt) и выполнил ваш скрипт bash, используя AppleScript do script
(или JXA * 1009). *) команда.
Было бы также быстрее, если бы вы использовали файл .scpt с командой osascript.
Я буду продолжать работать над этим сценарием и преобразовать его в JXA, для моей же выгоды, если не для вас.
Надеюсь, вы найдете это полезным. Если нет, может быть, кто-то еще.
Вопросы