如何在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访问它。
答案 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)
对于遇到此问题的其他人:
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