注解

tmuxp is usable but still needs your help reporting errors, bugs and usability feedback. If you encounter an error, please post on the Issue tracker.

内部结构(Internals)

参见

API Reference

tmuxp是一个建立在tmux命令行参数之上的 抽象层

util.TmuxRelationalObject 的角色类似一个容器,用以存放
Server, Session, Window 以及 Pane 之间的关联。
对象(object) 子级(child) 父级(parent)
Server Session None
Session Window Server
Window Pane Session
Pane None Window

事实上,tmux允许多个服务(server)运行在同一个系统上。每个服务(server)各自使用一个socket。 如果没有指定服务(server),tmux会自动启动一个默认服务(server)并与其通讯。

一个服务(server)可以拥有多个会话(session),可以使用 Ctrl-a s 在会话(session)间切换。

会话(session),窗口(window)和窗格(pane)都有各自唯一的标识(session_id, window_id, pane_id ), util.TmuxMappingObject 将利用这些标识来查找保存在 Server 对象中的数据。

对象(Object) 前缀(Prefix) 示例(Example)
Server N/A N/A, uses socket-name and socket-path
Session $ $13
Window @ @3243
Pane % %5433

Tmux与Pythonics风格的相似性(Similarities to Tmux and Pythonics)

经过对tmux操作的深入理解,以及如何以优雅的方式实现python的API tmuxp是建立在对tmux操作的深入理解以及对python AP的优雅实现的基础之上。

tmuxp利用tmux中的 FORMATTERS 来标识 Session, WindowPane 对象。

Tmuxp如何保留对窗格(pane),窗口(window)和会话(session)的引用?

Tmux对每个会话(session),窗口(window)和窗格(pane)都设有一个唯一的ID。

窗格(pane)使用 % 开头,例如 %1234

窗口(window)使用 @ 开头,例如 @2345

会话(session)使用 $, 例如 $

Tmuxp如何处理无命名窗口(window)?

Tmux会给每个窗口分配一个唯一的 window_id 做为标识。

{pane,window}_index VS a {pane,window,session}_id 的区别是什么?

Pane是根据屏幕中窗格的排布次序来编排序数。

window是根据会话中窗格的#来编排序数。

为了检验窗格(pane),窗口(window),会话(session), Tmuxp使用 Server.list_sessions(), Session.list_windows(), Window.list_panes() 来更新数据。

特性(Idiosyncrasies)

因为Tmuxp是用python实现的,所以诸如 new-window 这样的命令都会使用减号(-)而非下划线(_)