使用Python更改tmux窗口名称

问题描述 投票:0回答:2

有没有办法从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")
python fabric tmux
2个回答
0
投票

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

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

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库)的代码后,我认为:应该是使用的东西,它适合我。

© www.soinside.com 2019 - 2024. All rights reserved.