Mac 終端神器 iTerm2 新增 Python API

iTerm2 的文檔頁面顯示,其最新測試版增加了 Python API。具體來說就是,iTerm2 提供了一個 Python 包,通過它我們可以輕鬆編寫控制 iTerm2 並擴展其行為的 Python 腳本。

Mac 終端神器 iTerm2 新增 Python API

當然,該功能目前尚處於 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 < len(app.current_terminal_window.tabs):
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 及以上版本。

Mac 終端神器 iTerm2 新增 Python API

iTerm2 下載地址:↓↓↓


分享到:


相關文章: