我正在尝试分配一个全局键盘快捷键,该快捷键将使用特定配置文件启动 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-with
BASH 脚本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'
转义和引用可能会变得非常疯狂,但它满足了我的需要