Работая над созданием обработчика, который передает окно терминала, а затем вызывает идентификатор для сценария, я столкнулся со смешанными результатами, и мне любопытно, есть ли более чистый способ получитьwindow 1
Обработчик:
on termHandler()
set activeTerminal to ""
if application "Terminal" is running then
tell application "Terminal"
if not (exists window 1) and not busy of window 1 then
activate
tell application "Terminal" to do script "echo snow" in window 1
else
tell application "Terminal" to do script "date" in window 1
set activeTerminal to window 1
return activeTerminal
end if
do script "echo foo"
activate
set activeTerminal to window 1
return activeTerminal
end tell
else
tell application "Terminal"
activate
do script "echo bar" in window 1
set activeTerminal to window 1
return activeTerminal
end tell
end if
end termHandler
Все, что я прочитал и исследовал:
Предполагает, что AppleScript и Терминал не ладят. Моя текущая ОС — Sierra, в которой я пишу это, но я запускал Yosemite в других коробках, которые использовали бы этот скрипт. Моя конечная цель здесь - определить окно терминала в этом конкретном пространстве и запустить некоторые из них, do script
но у меня, похоже, возникла проблема с этим. Есть ли более простой способ определить, работает ли терминал, а не создавать новое окно, и если он работает, вернуть window 1
как переменную, чтобы я мог ее передать do script
?
Вам действительно нужно, чтобы он вводился в окно терминала, или это просто способ, которым вы обнаружили, что он работает? Я не уверен, знаете ли вы об этом или нет, но вы можете запускать сценарии оболочки непосредственно из AppleScript с помощью этой команды «сделать сценарий оболочки». В качестве примера:
do shell script "echo snow"
пользователь3439894
window
if not (exists window 1) and not busy of window 1 then
window
activate
window
пользователь3439894
reopen
window 1
ʀ2ᴅ2
пользователь3439894