【问题标题】:How do I get and set the titles of the window, tab, and session in iTerm 2 (with the API)?如何在 iTerm 2(使用 API)中获取和设置窗口、选项卡和会话的标题?
【发布时间】:2019-05-10 01:52:18
【问题描述】:

我一直在查看the documentation for iTerm2's Python API,试图找出一种获取和设置名称/标题的方法

  • 窗户,
  • 标签和
  • 会话。

我也尝试过 iTerm Python REPL,但无济于事。

窗口标题似乎仍然可以使用旧的 shell 转义码设置,例如使用这样的函数:

window_title() {
    echo -ne "\e]2;$@\a\e]1;$@\a"
}

但我什至找不到设置会话标题或选项卡标题的替代方法,更不用说通过 Python API 来设置了。

如果您查看其效果,可以更清楚地看到窗口标题、选项卡标题和会话标题之间的关系(假设会话标题设置为显示会话名称——如果未设置,则可能会造成混淆一样)。

【问题讨论】:

  • 啊...测试版界面...以为您在谈论第 3 方 python 库之一正在浮动...在这种情况下使用 RPC 结帐:iterm2.com/python-api/examples/georges_title.html
  • @SushiHangover:感谢您的提示,这看起来像是一些有趣的代码。但是它并没有像宣传的那样运行,所以当某处缺少链接并且我不知道在哪里时,我不愿意尝试从中复制任何内容......
  • 你应该在 George 的 iTerm repo 上发布一个问题:gitlab.com/gnachman/iterm2/issues 如果文档不同步/不工作(我相信也有一个 python API Doc repo,但我没有链接...)

标签: python macos iterm2 iterm


【解决方案1】:

阅读:

# https://iterm2.com/python-api/session.html#iterm2.Session.async_get_variable
session_title = (await session.async_get_variable("autoName"))

设置:

# https://iterm2.com/python-api/session.html#iterm2.Session.async_set_name
await session.async_set_name(session_title + "!")

这里有一个更详细的例子:

async def get_all_sessions(app:iterm2.app.App):
    for window in app.windows:
        window_title = (await window.async_get_variable("titleOverride"))
        print("window title: %s" % (window_title))
        # add window title suffix
        # await window.async_set_title(window_title+" ;)")
        # remove the added window title suffix
        # await window.async_set_title(window_title[0:-3])
        # print("window detailed: %s" % (window.pretty_str()))
        for tab in window.tabs:
            tab_title = (await tab.async_get_variable("titleOverride"))
            print("\t\ttab title: %s" % (tab_title))
            for session in tab.sessions:
                # https://iterm2.com/documentation-session-title.html
                # https://stackoverflow.com/questions/56069701/how-do-i-get-and-set-the-titles-of-the-window-tab-and-session-in-iterm-2-with
                # https://iterm2.com/python-api/session.html#iterm2.Session.async_get_variable
                session_title = (await session.async_get_variable("autoName"))
                print("\t\t\tsession title: %s" % (session_title))
                if session_title == "colabo-GIST":
                    print("\t\t\t: changing session name: %s" % (session_title))
                    # https://iterm2.com/python-api/session.html#iterm2.Session.async_set_name
                    await session.async_set_name(session_title + "!")
                # await session.async_inject(code)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多