Откройте, разделите окно iTerm2 и выполните команды внутри каждой из этих панелей - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь создать скрипт, который бы открывал окно iTerm2, разбивал его на 3 панели по вертикали и запускал несколько команд внутри каждой из этих панелей.

Вот моя попытка:

tell application "iTerm2"
  activate

  -- Create main window
  create window with default profile

  tell current session of current window
    set name to "frontend"
    write text "cd ~/Documents/frontendDir"
    split vertically with default profile
  end tell

  tell second session of current window -- ERROR HERE
    set name to "backend"
    write text "cd ~/Documents/backendDir"
    split vertically with default profile
  end tell

  tell third session of current window
    set name to "apollo-server"
    write text "cd ~/Documents/GitHub/apolloDir"
  end tell
end tell

Первая часть о создании frontend, кажется, работает, так как окно правильно открыто и в нем правильно выполняется команда cd ~/Documents/frontendDir. Окно также разделяется по вертикали один раз, так как я уверен, что оно перестает выполняться, когда я пытаюсь получить доступ ко второй панели моего окна.

Я получаю эту ошибку: iTerm got an error: Can’t get session 2 of current window

Заранее спасибо

1 Ответ

0 голосов
/ 08 мая 2019

iTerm session объекты содержатся в tabs, а не windows. Поэтому, как вы можете видеть из приведенного ниже фрагмента сценария, я ссылался на каждый сеанс для записи с помощью current tab из current window:

tell application "iTerm"
    activate

    set W to current window
    if W = missing value then set W to create window with default profile
    tell W's current session
        split vertically with default profile
        split vertically with default profile
    end tell
    set T to W's current tab
    write T's session 1 text "cd ~/Desktop"
    write T's session 2 text "cd ~/Downloads"
    write T's session 3 text "cd ~/Documents"
end tell

Насколько я могу судить, вы не можете установить свойство name для session; устанавливается заголовок кадра сеанса. Вы можете ссылаться на каждый session по его индексу (как я сделал здесь); его id свойство; или его tty свойство; все из которых являются уникальными значениями.

Как видите, индекс создается в порядке создания сеанса:

iTerm on macOS

...