iTerm2 python api 打开窗口运行命令

解决了等待会话登录时,命令打印在登录日志后的问题。

#!/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)

你可能感兴趣的:(iTerm2 python api 打开窗口运行命令)