iTerm2 python api 打开窗口运行命令
2020-12-19 本文已影响0人
koyeo
解决了等待会话登录时,命令打印在登录日志后的问题。
#!/usr/bin/env python
import iterm2
import AppKit
# 使用 MAC AppKit 打开 iTerm 应用
AppKit.NSWorkspace.sharedWorkspace().launchApplication_("iTerm")
async def main(connection):
app = await iterm2.async_get_app(connection)
tab = await app.current_window.async_create_tab()
# 等待会话登录时,不让命令打印在登录日志后
i = 0
async with tab.current_session.get_screen_streamer(want_contents=True) as streamer:
while True:
content = await streamer.async_get()
if content.line(i).string == '' or i > 2:
break
i = i + 1
# 在会话中执行命令,命令会随着会话结束(tab 关闭, window关闭)而终止
await tab.current_session.async_run_coprocess(command_line="echo 'ls ~'")
# 等待 APP 启动并发起连接,APP 启动不成功会一直阻塞
iterm2.run_until_complete(main, True)