我正在使用一个名为“Timing”的程序来跟踪我的时间。Timing 使用 iTerm 中当前窗口的名称进行分类。
我想将 iTerm 的当前标题设置为与当前活动的 tmux 窗口的名称匹配。
我已经在建立了一个文件,内容~/.config/fish/functions/fish_title.fish
如下:
function fish_title
tmux display-message -p '#W'
end
每当我打开新的终端窗口时,这都会成功将当前 Tmux 窗口标题输出到终端窗口。但是,如果我重命名 tmux 窗口或切换到新窗口,终端不会更新。
pwd
如果我使用类似的东西它确实会更新fish_title
:
function fish_title
pwd
end
关于如何fish_title
动态获取 tmux 窗口名称有什么想法吗?
答案1
首先要指出的是,您可以通过 tmux 完全独立于 shell 执行此操作。将以下内容添加到您的 ~/.tmux.conf;例如:
set-option -g set-titles on
set-option -g set-titles-string "#S / #W"
此外,您需要确保 iTerm2 配置为允许程序通过转义序列设置标题。请参阅“终端可以设置选项卡/窗口标题”部分https://www.iterm2.com/documentation-one-page.html。
但真正的问题是 fish_title 函数发送的转义序列没有通过 tmux。Tmux 反而使用值来设置窗格标题。虽然不太清楚,但在 的“名称和标题”部分对此进行了解释man tmux
。添加#T
到 以set-titles-string
查看它实际上通过您的fish_title
函数设置为与窗口名称相同的值。