首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止tmux的pane_title更新

阻止tmux的pane_title更新
EN

Stack Overflow用户
提问于 2020-02-07 11:24:32
回答 1查看 164关注 0票数 1

我正在尝试写一个脚本,它将以编程方式设置tmux窗格的标题。我使用下面的代码让它在很大程度上正常工作:

代码语言:javascript
复制
# tmux.conf
set -g pane-border-format "#{pane_index}:#{pane_title}"
代码语言:javascript
复制
# script
# ...
tmux select-pane -t foo:0.0 -T "this will be shortlived"

但是,只要我在该窗格中执行任何操作,自定义标题就会被取消设置。我已经查看了tmux的源代码,但没有找到任何明显的答案。(该值似乎是我的$PS1的片段。)

那么,pane_title是如何设置的,我有什么方法可以防止它覆盖我的自定义标题吗?(我非常确定您可以使用shell函数在窗格边框格式的字符串模板中填充值,但如果通过脚本动态设置这些值,则不会真正起作用。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 14:17:32

窗格标题的目的是让tmux内部的应用程序更新它,除了配置每个应用程序不这样做,或者修改tmux本身之外,没有其他方法可以防止这种情况发生。在这种情况下,是您的shell在更改它。您可以检查您的shell配置文件和系统shell配置文件中的OSC标题设置序列(\033]2;或\033]0;或\e[2;或\e[0;),但其他程序仍然可以随意更改它。

如果您想要一个不能由应用程序修改的自定义窗格标题,最好的选择是使用用户选项。如果您有tmux 3.0a或更高版本,您可以在脚本的窗格中设置它:

代码语言:javascript
复制
[ -n "$TMUX" ] && tmux set -p @mytitle "foo"

然后以窗格边框格式使用它:

代码语言:javascript
复制
set -g pane-border-format "#{@mytitle}"

如果您使用的是较旧的tmux,则没有窗格选项,但可以使用以窗格ID命名的选项,如下所示:

代码语言:javascript
复制
if [ -n "$TMUX" ]; then
    I=$(tmux display -p '#{pane_id}')
    tmux set -w "@mytitle_$I" "foo"
fi

然后:

代码语言:javascript
复制
set -g pane-border-format '#(tmux show -wv "@mytitle_#{pane_id}")'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60106672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档