tmux set-titles不起作用?


17

要开始tmux每次shell登录,~/.bashrc(在服务器上)添加了以下内容:

if [ $TERM != "screen-256color" ] && [  $TERM != "screen" ]; then
    tmux attach || tmux new; exit
fi

我还想在将ssh转换为主机时将窗口标题更改为user@server(而不是user@localhost)。这是我的~/.tmux.conf

set -g prefix C-a
unbind C-b
bind C-a send-prefix

set -g set-titles on
set -g set-titles-string "#T"

bind-key o split-window -v
bind-key e split-window -h

bind-key w kill-pane

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

如您所见,set-titles已将设置为on,但它没有按预期工作。

更多信息:

在tmux之外:

$ echo $TERM
xterm

tmux内部:

$ echo $TERM
screen

show -ghttps//clbin.com/h7oDh

tmux infohttp//sprunge.us/XHCB

这是运行一段时间后的日志tmux -vvvvv

  • tmux-client-8441.log:https://clbin.com/eFwFF
  • tmux-out-8443.log:https://clbin.com/MSKZv
  • tmux-server-8443.log:https ://clbin.com/JXwRN

如果我注释掉了~/.bashrc从笔记本电脑,ssh到服务器的中的行,则标题栏正确显示(quanta@server),然后tmux从那里开始也可以正常工作。

但是,如果我要tmux在登录后立即开始,则标题栏仍然位于quanta@Ubuntussh之后。


更新星期五5月10日07:51:23 ICT 2013

我删除了该exit命令,以便在关闭最后一个tmux窗口时不关闭外壳程序会话:

if [ $TERM != "screen-256color" ] && [  $TERM != "screen" ]; then
    tmux attach || tmux new
fi

奇怪的是:

  • ssh到服务器->标题栏: quanta@Ubuntu
  • tmux->标题栏分离到quanta@server
  • tmux再次附加->标题栏仍正确显示 quanta@server

我不确定它是否与PROMPT_COMMAND环境变量有关:

外面tmux

$ echo $PROMPT_COMMAND 
echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"

内部tmux

$ echo $PROMPT_COMMAND
echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"

万一在这个问题上不是很明显。他的设置工作正常,只是当他尝试从.bashrc运行它时效果不佳。
slm

请提供的输出tmux info
slm

Answers:


15

问题解决了!

为了使本机xterm鼠标能够滚动到tmux,许多WikiQ&A网站博客中,建议添加如下行:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

~/.tmux.conf。是罪魁祸首。

要允许终端窗口中的xterm标题,还需要添加XT标志,如下所示:

set -g terminal-overrides "xterm*:XT:smcup@:rmcup@"

资料来源:http : //opennomad.com/content/goodbye-screen-hello-tmux


3
感谢您的帖子。以我rxvtset -ga terminal-overrides ",rxvt*:XT"
为例

2
正如@favadi指出的那样,对此的正确解决方法是使用-a选项set来附加smcup / rmcup替代。这将解决其他奇怪的问题,例如无法正确设置光标形状。
2014年

2

从tmux-users邮件列表中发现了这个线程。该线程的标题为:set-titles not working。此线程有几件事情可以尝试。有个更干净的线程版本

XTerm资源

首先,最终的解决方法是将以下行添加到您的XTerm资源文件中~/.Xresources

XTerm*allowSendEvents: true

调试tmux技巧

此线程中还有一些调试技巧也可能对您有所帮助。

详细的tmux

  1. 关闭所有tmux会话
  2. 运行命令: tmux -vvvvv
  3. 运行命令: vi foo
  4. 保存文件
  5. 退出tmux

这样做之后,您应该有3个文件,如下所示:

  • tmux-out-21594.log
  • tmux-client-21592.log
  • tmux-server-21594.log

tmux信息

$ tmux info
tmux 1.4, pid 22182, started Fri May 10 04:00:37 2013
socket path /var/run/tmux/tmux-500/default, debug level 0
system is Linux 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64
configuration file is /home/saml/.tmux.conf
protocol version is 6

Clients:
 0: /dev/pts/12 (8, 11): 0 [132x24 xterm] [flags=0x1/0x38, references=0]

Sessions: [5/10]
 0: 0: 1 windows (created Fri May 10 04:00:37 2013) [132x23] [flags=0x0]
   0: bash [132x23] [flags=0x8, references=1, last layout=-1]
     0: /dev/pts/48 22183 13 1/23, 135 bytes; UTF-8 0/23, 0 bytes

Terminals:
xterm [references=1, flags=0x0]:
 1: acsc: (string) ``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
 0: AX: (flag) true
 2: bel: (string) \007
 ...
 ...
144: smul: (string) \033[4m
145: vpa: (string) \033[%i%p1%dd
146: xenl: (flag) true

Jobs:

在这里问之前,我已经阅读了该主题。XTerm*allowSendEvents: true没用。日志文件已上传。看到我更新的问题。
量子

1
将来,您应该在问题中包括这些类型的项目,以免浪费大家的时间来重新整理已经尝试过的内容。
slm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.