Mac 终端神器 iTerm2 新增 Python API

论坛 期权论坛 期权     
Python开发者   2019-6-9 21:25   4477   0
(给Python开发者加星标,提升Python技能)
转自:开源中国
www.oschina.net/news/105404/iterm2-python-api
iTerm2 的文档页面显示,其最新测试版增加了 Python API。具体来说就是,iTerm2 提供了一个 Python 包,通过它我们可以轻松编写控制 iTerm2 并扩展其行为的 Python 脚本。

当然,该功能目前尚处于 Beta 阶段,API 可能偶尔会发生变化。
示例代码
Function Key Tabs(通过功能键切换选项卡)
  1. #!/usr/bin/env python3
  2. import asyncio
  3. import iterm2
  4. async def main(connection):
  5.     app = await iterm2.async_get_app(connection)
  6.     keycodes = [ iterm2.Keycode.F1,
  7.                  iterm2.Keycode.F2,
  8.                  iterm2.Keycode.F3,
  9.                  iterm2.Keycode.F4,
  10.                  iterm2.Keycode.F5,
  11.                  iterm2.Keycode.F6,
  12.                  iterm2.Keycode.F7,
  13.                  iterm2.Keycode.F8,
  14.                  iterm2.Keycode.F9,
  15.                  iterm2.Keycode.F10,
  16.                  iterm2.Keycode.F11,
  17.                  iterm2.Keycode.F12 ]
  18.     async def keystroke_handler(connection, keystroke):
  19.         if keystroke.modifiers == [ iterm2.Modifier.FUNCTION ]:
  20.             try:
  21.               fkey = keycodes.index(keystroke.keycode)
  22.               if fkey >= 0 and fkey < len(app.current_terminal_window.tabs):
  23.                   await app.current_terminal_window.tabs[fkey].async_select()
  24.             except:
  25.               pass
  26.     pattern = iterm2.KeystrokePattern()
  27.     pattern.forbidden_modifiers.extend([iterm2.Modifier.CONTROL,
  28.                                         iterm2.Modifier.OPTION,
  29.                                         iterm2.Modifier.COMMAND,
  30.                                         iterm2.Modifier.SHIFT,
  31.                                         iterm2.Modifier.NUMPAD])
  32.     pattern.required_modifiers.extend([iterm2.Modifier.FUNCTION])
  33.     pattern.keycodes.extend(keycodes)
  34.     async def monitor():
  35.         async with iterm2.KeystrokeMonitor(connection) as mon:
  36.             while True:
  37.                 keystroke = await mon.async_get()
  38.                 await keystroke_handler(connection, keystroke)
  39.     # Run the monitor in the background
  40.     asyncio.create_task(monitor())
  41.     # Block regular handling of function keys
  42.     filter = iterm2.KeystrokeFilter(connection, [pattern])
  43.     async with filter as mon:
  44.         await iterm2.async_wait_forever()
  45. iterm2.run_forever(main)
复制代码
使用该脚本,我们可以通过按下功能键来选择选项卡。F1 表示选择第一个选项卡,F2 表示选择第二个选项卡等。
官方还提供了关于该功能的教程,包含了编写脚本的详细指南,并描述了 iTerm2 脚本系统的架构。
iTerm2 是 iTerm 的后继者,也是 Terminal 的替代者。这是一款用于 macOS 的终端模拟器,支持窗口分割、热键、搜索、自动补齐、无鼠标复制、历史粘贴、即时重播等功能特性,适用于 macOS 10.10 及以上版本。



推荐阅读
(点击标题可跳转阅读)
[/url]
[url=http://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652568270&idx=2&sn=99ed122888f2363245a252f2cb2bd173&chksm=8464d284b3135b92f394af28afaccc3ec60f4de46d6e5c927b171b8cbee1b882bf57a88ccd66&scene=21#wechat_redirect]API Star:
一个 Python 3 的 API 框架
Python API:OpenStack 隐藏深处的秘密


觉得本文对你有帮助?请分享给更多人
关注「Python开发者」加星标,提升Python技能

喜欢就点一下「好看」呗~
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:835
帖子:167
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP