Откройте новую вкладку "Терминал" с OS X JavaScript для автоматизации
Я играю с JavaScript для автоматизации на OS X Yosemite.
Я пытаюсь открыть новую вкладку в приложении терминала. Вот что у меня так далеко:
var Terminal = Application('Terminal);
var Tab = Terminal.Tab;
// Activate the Terminal App, creates a new window if there isn't one already
Terminal.activate();
// This contains all the windows
Terminal.windows;
// This contains the first window
Terminal.windows.at(0) // alternatively, Terminal.windows[0]
// This contains the tabs in the first window
Terminal.windows.at(0).tabs
Terminal.windows.at(0).tabs
это по сути массив. Оно имеет .push
метод. Я предполагал, что мог бы использовать следующее утверждение, чтобы добавить вкладку в окно:
Terminal.windows.at(0).tabs.push(new Tab());
но это выдает очень общую ошибку:
Error -10000: AppleEvent handler failed.
Документация остро отсутствует, и я думаю, что этот JavaScript для автоматизации был просто уловкой, чтобы привлечь разработчиков JavaScript на борт.
Примечание. Я видел решения AppleScript, которые по сути просто сообщают System Events
Приложение, чтобы нажать Ctrl + T, чтобы открыть новую вкладку. Это кажется очень хакерским и делает Command + T там жестко закодированным.
3 ответа
Следующий код работает для chrome
а также safari
, но не работа для terminal
Я все еще выясняю причину, посмотрим, поможет ли эта информация.
chrome = Application("Google Chrome")
newTab = chrome.Tab()
chrome.windows[0].tabs.push(newTab)
Посмотрите, работает ли следующее в вашем случае:
var system = Application('System Events');
var terminal = Application('Terminal');
// tell application "Terminal" to activate
terminal.activate();
// tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
system.keystroke('t', {using: 'command down'});
Вы можете эмулировать ярлык для одной новой вкладки. Также нужно объявить целевую вкладку
tell application "System Events" to keystroke "t" using {command down}
Посмотрите пример с двумя или более вкладками
teel application "Terminal"
do script "cd ~/ && ls" in tab 1 of front window
tell application "System Events" to keystroke "t" using {command down}
do script "cd ~/Applications && ls" in tab 2 of front window
end tell