Mac OS:如何从 Automator 或 AppleScript 启动具有特定配置文件的 iTerm 终端?

Mac OS:如何从 Automator 或 AppleScript 启动具有特定配置文件的 iTerm 终端?

我正在尝试分配一个全局键盘快捷键,该快捷键将使用特定配置文件启动 iTerm 的新窗口。(我设法通过 Automator 和 AppleScript 启动了一个新的 Chrome 窗口,但事实证明这更加困难)

这相当于激活 iTerm,并在顶部菜单中选择配置文件 -> “我的配置文件”,同时按下“alt”或“option”,这样它会在新窗口中打开,而不是在当前窗口中打开新选项卡。

有什么想法可以使用 Automator 或 AppleScript 来做到这一点吗?

如果相关的话,我有 Mac OS Mountain Lion

(抱歉,如果这是一个绝对的新手问题,我刚刚从 Windows 转到 Mac,我正在尝试优化我一直在做的事情)

谢谢你!

答案1

之前的答案不再适用于最新版本的 iTerm2 (3),因为terminal已停用。新方法是使用create window with profile

但是,这并不像预期的那样工作:如果 iTerm 正在运行,它将使用适当的配置文件打开新窗口。但如果 iTerm 没有运行,它将使用默认配置文件打开一个窗口,然后使用提供的其他配置文件打开第二个窗口。我想出了以下脚本来解决这个问题:

-- this script will start/activate iTerm (close the default window if the app had been newly started), then open a new session with a desired profile

on is_running(appName)
    tell application "System Events" to (name of processes) contains appName
end is_running

set iTermRunning to is_running("iTerm2")

tell application "iTerm"
    activate
    if not (iTermRunning) then
        delay 0.5
        close the current window
    end if
    create window with profile "xxxxxx"
end tell

当然,如果 iTerm 支持命令行参数,那就真的很容易了。希望它能在某一点

答案2

结合第 11 行和第 58 行iTerm 网站上的 AppleScript 示例代码...

tell application "iTerm"
activate
tell (make new terminal)
    launch session "Your Profile Name"
end tell
end tell

答案3

根据以上答案以及其他osascript命令:

从 BASH 命令行通过将 AppleScript 包装在osascript

osascript -e "tell application \"iTerm\"
    create window with profile \"my-cool-profile\"
end tell"

或将配置文件名称作为参数的 BASH 函数:

open-with () {
  osascript -e "tell application \"iTerm\"
    create window with profile \"$1\"
  end tell"
}

作为open-withBASH 脚本open-with my-cool-profile

#! /usr/bin/env bash

PROFILE="${1-Default}"

osascript -e $"tell application \"iTerm\"
  create window with profile \"$PROFILE\"
end tell"

并且作为open-run可以在打开时为您运行程序/命令的 BASH 脚本:

#! /usr/bin/env bash

PROFILE="${1-Default}"
CMD="${2-echo "I, \$(whoami), am here at \$PWD"}"

osascript -e "tell application \"iTerm\"
  set newWindow to (create window with profile \"$PROFILE\")
  tell current session of newWindow
    write text \"$CMD\"
  end tell
end tell"

示例:在特定配置文件中打开并运行 ssh 命令

open-run my-ssh-profile 'ssh [email protected]'

示例:htop在自己的窗口中打开,用户退出时自动关闭窗口htop

open-run my-htop-profile 'htop && exit'

示例:像上面一样通过 ssh 在远程服务器上

open-run my-htop-profile 'ssh -t [email protected] bash -c htop && exit'

转义和引用可能会变得非常疯狂,但它满足了我的需要

相关内容