使用Python更改tmux窗口名称

时间:2019-03-20 11:55:02

标签: python fabric tmux

是否可以通过python更改tmux窗口标题。我正在使用fabric自动执行长时间运行的作业,因此可以在tmux中以分离模式运行作业。 (这可能不是与fabric相关的问题,但是我认为使用Fabric的人可能会遇到此问题)我知道可以使用以下类似的方法来创建新会话并在这些会话中运行命令。

with Connection("ip") as cxn:
    cxn.run("tmux new -d -s session_name")
    cxn.run("tmux send -t session_name.0 ls ENTER")

有没有一种方法可以创建一个带有特定标题的新窗口,并像这样调用它:

with Connection("ip") as cxn:
  if cxn.run("tmux has -t session_name", warn=True, hide="err").exited != 0:
     cxn.run("tmux new -d -s session_name")
  cxn.run("tmux new -d -s session_name -n windown_name")
  cxn.run("tmux send -t session_name.window_name ls ENTER")

2 个答案:

答案 0 :(得分:0)

我不确定这是否是您想要的,但是这将创建一个名为“ dev”的新会话,并且在该会话内将创建一个窗口标题“ win1”并在该窗口中启动python repl。 / p>

with Connection("ip") as cxn:
    cxn.run('''tmux new-session  -s "dev" -n "win1" \; send-keys 'python'  C-m  \;''')

答案 1 :(得分:0)

tmux引用窗口名称的方式是冒号-:,因此现在可以使用-

with Connection("ip") as cxn:
  if cxn.run("tmux has -t session_name", warn=True, hide="err").exited != 0:
     cxn.run("tmux new -d -s session_name")
  cxn.run("tmux new-window -t session_name -n windown_name")
  cxn.run("tmux send -t session_name:window_name ls ENTER")

在没有tmux的工作原理的完全知识的情况下,很难锻炼这样的细节。在阅读关于scripting tmux here的教程并深入研究libtmux here(用于控制tmux的Python库)的代码后,我认为:应该是使用及其对我有用。