Активировать окно в приложении с заголовком

#applescript

#applescript

Вопрос:

Пытаюсь выяснить, как активировать окно в iTerm с определенным именем / заголовком с помощью applescript. Моя последняя попытка:

 #!/usr/bin/osascript

tell application "iTerm2"
  set winlist to every window
  repeat with win in winlist
    set the_title to title of window win
    if the_title contains "Development" then
      activate win
    end if
  end repeat
end tell
  

Но я получаю эту ошибку:

execution error: iTerm got an error: Can’t make title of window (window id 203) into type specifier. (-1700)

Окно находится в полноэкранном режиме, поэтому я не уверен, имеет ли это значение или нет.

Комментарии:

1.У окна iTerm нет title свойства, однако у него есть name свойство. Таким образом, изменение title на name устранит текущую ошибку. Но это само по себе не исправит все. Простое внесение этого изменения приведет к другой ошибке, и чтобы обойти это, удалите window из перед win , чтобы у вас было set the_title_ to name of win . Это все равно не приведет вас туда, куда вы хотите перейти, потому что activate относится к приложению, а не к конкретному окну. Из руководства по языку AS «Выводит приложение на передний план, запуская его при необходимости».

2. Да, я тоже пытался name . Нет кубиков. Я пошел совершенно другим путем. Но теперь моя проблема заключается в том, что окно в полноэкранном режиме больше всего отображается. Не уверен, что это можно сделать.

3. Я беру свои слова обратно. Вы были правы. Необходимо использовать имя и удалить бит окна.

Ответ №1:

Следующий пример кода AppleScript работает для меня в macOS High Sierra в редакторе сценариев, чтобы переключиться на полноэкранное окно, содержащее имя цели:

 tell application "iTerm"
    set winlist to every window
    repeat with win in winlist
        set the_title to name of win
        if the_title contains "Development" then
            activate
            set index of win to 1
        end if
    end repeat
end tell
  

Если целевое окно не находится в полноэкранном режиме, просто выводит его на передний план.

Комментарии:

1. Да, это очень похоже на то, что я придумал. Я работаю над одной незначительной проблемой, когда при запуске сценария из другого окна iterm на другом мониторе это окно iterm остается активным. Впрочем, я могу с этим смириться.

2. @StevieD, я тестировал в системе с одним монитором.