Изменение имени окна tmux с помощью Python - PullRequest
0 голосов
/ 20 марта 2019

Есть ли способ изменить заголовок окна tmux на python.Я использую fabric для автоматизации развертывания длительных заданий, чтобы я мог запускать задания в автономном режиме в tmux.(это может быть не 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 голосов
/ 20 марта 2019

Способ, которым 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, такие детали трудно отработать. Прочитав учебник по сценариям tmux здесь и покопавшись в коде libtmux здесь (библиотека Python для управления tmux), я решил, что : должно быть использовать и это работает для меня.

0 голосов
/ 20 марта 2019

Я не уверен, что это то, что вам нужно, но это создаст новый сеанс с именем "dev", и внутри этого сеанса он создаст заголовок окна "win1" и запустит python repl в этом окне.

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