为tmux提供ORM封装的Python类型库。
项目描述
libtmux
libtmux
是一个类型化Python库,它提供了与终端多路复用器tmux交互的封装。您可以使用它来管理tmux服务器、会话、窗口和面板。此外,libtmux
还支持tmuxp,一个tmux工作空间管理器。
libtmux基于tmux的目标和格式创建对象映射,以便遍历、检查和交互式地与实时tmux会话。
安装
$ pip install --user libtmux
打开tmux会话
会话名称 foo
,窗口名称 bar
$ tmux new-session -s foo -n bar
通过Python控制您的tmux会话
$ python
使用 ptpython、ipython 等工具,享受带有自动补全功能的良好壳环境
$ pip install --user ptpython
$ ptpython
连接到实时tmux会话
>>> import libtmux
>>> svr = libtmux.Server()
>>> svr
Server(socket_path=/tmp/tmux-.../default)
技巧:您还可以使用 tmuxp 的 tmuxp shell
直接进入您当前的tmux服务器/会话/窗口面板。
运行任何tmux命令,无关上下文
尊重tmux套接字名称和路径
>>> server = Server(socket_name='libtmux_doctest')
>>> server.cmd('display-message', 'hello world')
<libtmux...>
新会话
>>> server.cmd('new-session', '-d', '-P', '-F#{session_id}').stdout[0]
'$2'
>>> session.cmd('new-window', '-P').stdout[0]
'libtmux...:2.0'
从原始命令输出,到丰富的 Window
对象(在实践中,您会使用 Session.new_window()
)
>>> Window.from_window_id(window_id=session.cmd('new-window', '-P', '-F#{window_id}').stdout[0], server=session.server)
Window(@2 2:..., Session($1 libtmux_...))
从窗口创建面板
>>> window.cmd('split-window', '-P', '-F#{pane_id}').stdout[0]
'%2'
直接将原始输出输出到 Pane
>>> Pane.from_pane_id(pane_id=window.cmd('split-window', '-P', '-F#{pane_id}').stdout[0], server=window.server)
Pane(%... Window(@1 1:..., Session($1 libtmux_...)))
列出会话
>>> server.sessions
[Session($1 ...), Session($0 ...)]
按属性过滤会话
>>> server.sessions.filter(history_limit='2000')
[Session($1 ...), Session($0 ...)]
直接查找
>>> server.sessions.get(session_id="$1")
Session($1 ...)
过滤会话
>>> server.sessions[0].rename_session('foo')
Session($1 foo)
>>> server.sessions.filter(session_name="foo")
[Session($1 foo)]
>>> server.sessions.get(session_name="foo")
Session($1 foo)
控制您的会话
>>> session
Session($1 ...)
>>> session.rename_session('my-session')
Session($1 my-session)
在后台创建新窗口(不要切换到它)
>>> bg_window = session.new_window(attach=False, window_name="ha in the bg")
>>> bg_window
Window(@... 2:ha in the bg, Session($1 ...))
# Session can search the window
>>> session.windows.filter(window_name__startswith="ha")
[Window(@... 2:ha in the bg, Session($1 ...))]
# Directly
>>> session.windows.get(window_name__startswith="ha")
Window(@... 2:ha in the bg, Session($1 ...))
# Clean up
>>> bg_window.kill()
关闭窗口
>>> w = session.active_window
>>> w.kill()
抓取剩余的tmux窗口
>>> window = session.active_window
>>> window.split(attach=False)
Pane(%2 Window(@1 1:... Session($1 ...)))
重命名窗口
>>> window.rename_window('libtmuxower')
Window(@1 1:libtmuxower, Session($1 ...))
分割窗口(创建新面板)
>>> pane = window.split()
>>> pane = window.split(attach=False)
>>> pane.select()
Pane(%3 Window(@1 1:..., Session($1 ...)))
>>> window = session.new_window(attach=False, window_name="test")
>>> window
Window(@2 2:test, Session($1 ...))
>>> pane = window.split(attach=False)
>>> pane
Pane(%5 Window(@2 2:test, Session($1 ...)))
在面板内输入(发送按键)
>>> pane.send_keys('echo hey send now')
>>> pane.send_keys('echo hey', enter=False)
>>> pane.enter()
Pane(%1 ...)
抓取面板的输出
>>> pane.clear() # clear the pane
Pane(%1 ...)
>>> pane.send_keys("cowsay 'hello'", enter=True)
>>> print('\n'.join(pane.cmd('capture-pane', '-p').stdout)) # doctest: +SKIP
$ cowsay 'hello'
_______
< hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
...
遍历和导航
>>> pane.window
Window(@1 1:..., Session($1 ...))
>>> pane.window.session
Session($1 ...)
Python支持
不支持/无安全发布或错误修复
- Python 2.x:backports分支是
v0.8.x
。
捐赠
您的捐赠将用于新功能开发、测试和支持。您的资金将直接用于项目的维护和开发。如果您是个人,请随意捐赠您认为合适的金额,以反映您从项目中获得的收益。
请参阅https://git-pull.com/support.html上的捐赠选项。
项目详情
- tmux支持:1.8+
- Python支持:>= 3.8,pypy,pypy3
- 源:https://github.com/tmux-python/libtmux
- 文档:https://libtmux.git-pull.com
- API:https://libtmux.git-pull.com/api.html
- 变更日志:https://libtmux.git-pull.com/history.html
- 问题:https://github.com/tmux-python/libtmux/issues
- 测试覆盖率:https://codecov.io/gh/tmux-python/libtmux
- pypi:https://pypi.python.org/pypi/libtmux
- Open Hub:https://www.openhub.net/p/libtmux-python
- Repology:https://repology.org/project/python:libtmux/versions
- 许可证:MIT。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
libtmux-0.37.0.tar.gz (256.3 kB 查看哈希值)
构建分布
libtmux-0.37.0-py3-none-any.whl (56.2 kB 查看哈希值)
关闭
libtmux-0.37.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21955c5dce6332db41abad5e26ae8c4062ef2b9a89099bd57a36f52be1d5270f |
|
MD5 | ad5001db65922d348ac03c108bfa28a2 |
|
BLAKE2b-256 | 4a51b2543613a0f85247559073bc69cdca4cc0ccb590a45c98ac3400a51ba877 |
关闭
libtmux-0.37.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e8cbab30b033d132b6fca5dddb575bb7f6a1fd802328e7174f9b49023556376 |
|
MD5 | 95e027c948299f170427481f1d18a65e |
|
BLAKE2b-256 | aa210703fd85a278f08cabca0db0a159a05511ae5216fd38921c05a89270c9b8 |