歡迎光臨
每天分享高質量文章

Mac終端神器iTerm2新增Python API

來自:開源中國

https://www.oschina.net/news/105404/iterm2-python-api

iTerm2 的檔案頁面顯示,其最新測試版增加了 Python API。具體來說就是,iTerm2 提供了一個 Python 包,透過它我們可以輕鬆編寫控制 iTerm2 並擴充套件其行為的 Python 指令碼。

當然,該功能目前尚處於 Beta 階段,API 可能偶爾會發生變化。

示例程式碼

Function Key Tabs(透過功能鍵切換選項卡)

#!/usr/bin/env python3

import asyncio
import iterm2

async def main(connection):
    app = await iterm2.async_get_app(connection)
    keycodes = [ iterm2.Keycode.F1,
                 iterm2.Keycode.F2,
                 iterm2.Keycode.F3,
                 iterm2.Keycode.F4,
                 iterm2.Keycode.F5,
                 iterm2.Keycode.F6,
                 iterm2.Keycode.F7,
                 iterm2.Keycode.F8,
                 iterm2.Keycode.F9,
                 iterm2.Keycode.F10,
                 iterm2.Keycode.F11,
                 iterm2.Keycode.F12 ]
    async def keystroke_handler(connection, keystroke):
        if keystroke.modifiers == [ iterm2.Modifier.FUNCTION ]:
            try:
              fkey = keycodes.index(keystroke.keycode)
              if fkey >= 0 and fkey                   await app.current_terminal_window.tabs[fkey].async_select()
            except:
              pass


    pattern = iterm2.KeystrokePattern()
    pattern.forbidden_modifiers.extend([iterm2.Modifier.CONTROL,
                                        iterm2.Modifier.OPTION,
                                        iterm2.Modifier.COMMAND,
                                        iterm2.Modifier.SHIFT,
                                        iterm2.Modifier.NUMPAD])
    pattern.required_modifiers.extend([iterm2.Modifier.FUNCTION])
    pattern.keycodes.extend(keycodes)

    async def monitor():
        async with iterm2.KeystrokeMonitor(connection) as mon:
            while True:
                keystroke = await mon.async_get()
                await keystroke_handler(connection, keystroke)
    # Run the monitor in the background
    asyncio.create_task(monitor())

    # Block regular handling of function keys
    filter = iterm2.KeystrokeFilter(connection, [pattern])
    async with filter as mon:
        await iterm2.async_wait_forever()

iterm2.run_forever(main)

使用該指令碼,我們可以透過按下功能鍵來選擇選項卡。F1 表示選擇第一個選項卡,F2 表示選擇第二個選項卡等。

官方還提供了關於該功能的教程,包含了編寫指令碼的詳細指南,並描述了 iTerm2 腳本系統的架構。

iTerm2 是 iTerm 的後繼者,也是 Terminal 的替代者。這是一款用於 macOS 的終端模擬器,支援視窗分割、熱鍵、搜尋、自動補齊、無滑鼠複製、歷史貼上、即時重播等功能特性,適用於 macOS 10.10 及以上版本。

已同步到看一看
贊(0)

分享創造快樂