如何使用tmuxinator设置窗格标题

时间:2017-12-13 19:41:57

标签: tmux tmuxinator

如何在tmuxinator会话中的每个窗格上设置唯一标题?

我正在尝试运行多个窗格,以显示从htop运行ssh到不同服务器的输出。我的配置如下:

project_name: Server Monitor
windows:
  - servers:
      layout: tiled
      panes:
        - ssh -t -i mykey.pem user@server1 htop
        - ssh -t -i mykey.pem user@server2 htop
        - ssh -t -i mykey.pem user@server3 htop

当我使用tmuxinator local启动它时,它运行命令就好了,我看到htop的输出。但是,窗格看起来都一样,并且没有显示SSH标题,因此几乎无法分辨哪个窗格对应于哪个服务器。

如何更改配置,以便在每个窗格上显示唯一标题?

This example表明底层tmux支持此功能,但我不知道如何通过tmuxinator访问它。

2 个答案:

答案 0 :(得分:2)

您需要做的是首先在.tmux.conf中使用以下行启用窗格状态:

set -g pane-border-format "#{pane_index} #{pane_title}"
set -g pane-border-status bottom

然后在您的tmuxinator配置中添加一个printf命令,该命令将发送相应的转义序列以动态设置窗格标题。现在每个窗格将有2个命令,因此您需要添加另一个带名称的缩进级别。

project_name: Server Monitor
windows:
  - servers:
      layout: tiled
      panes:
        - p1:
          - printf '\033]2;%s\033\\' 'server1'
          - ssh -t -i mykey.pem user@server1 htop
        - p2:
          - printf '\033]2;%s\033\\' 'server2'
          - ssh -t -i mykey.pem user@server2 htop
        - p3:
          - printf '\033]2;%s\033\\' 'server3'
          - ssh -t -i mykey.pem user@server3 htop

至少需要tmux 2.3才能在边框中显示窗格标题。

答案 1 :(得分:0)

对于遇到此问题的其他人:

  • 不想更改其布局
  • 在Meuh的答案中解析结构时遇到了问题(我遇到了undefined method shellescape for #<Array错误。

您仍然需要将它们添加到您的.tmux.conf

set -g pane-border-format "#{pane_index} #{pane_title}"
set -g pane-border-status bottom

您可以在ssh命令之前添加;并执行以下操作:

name: myBoxes
root: ~/
windows:
- hosts:
    layout: tiled
    panes:
    - printf '\033]2;%s\033\\' 'role_storage_v45 : hostname2.net'; ssh 10.20.30.1
    - printf '\033]2;%s\033\\' 'role_dns_v15 : hostname1.net'; ssh 10.20.30.2