在 tmux 中配置状态行的中心

在 tmux 中配置状态行的中心

我在不同的服务器上使用 tmux,并且喜欢在顶部中心的显著位置显示当前主机的主机名。

在手册页中,我只找到设置右模板和左模板字符串的选项:

set -g status-right "<template string>"
set -g status-left "<template string>"

窗口列表也可以居中:

set -g status-justify centre

如何为中心配置模板字符串?

答案1

除了修改 tmux 之外,您无法执行此操作,因为左/右状态定位是硬编码的,将中心(如果足够大)留给窗口列表。

这是相关的块status.c

    /* Work out left and right strings. */
    memcpy(&lgc, &stdgc, sizeof lgc);
    left = status_redraw_get_left(c, t, utf8flag, &lgc, &llen);
    memcpy(&rgc, &stdgc, sizeof rgc);
    right = status_redraw_get_right(c, t, utf8flag, &rgc, &rlen);

    /*
     * Figure out how much space we have for the window list. If there
     * isn't enough space, just show a blank status line.
     */               

答案2

自从 2015 年提出这个问题以来,事实似乎已经发生了变化。现在只需几行配置就可以很容易地实现所需的结果:

最重要的是第一行:

set -g status-right "#[align=absolute-centre] Hello, world! #[align=right]"
set -ga status-right "#{?window_bigger,[#{window_offset_x}#,#{window_offset_y}] ,}\ 

相关内容