tmux:找到“我的”窗口,检查它是否处于活动状态

tmux:找到“我的”窗口,检查它是否处于活动状态

我想找到某种方法让程序找到以下信息:

1)我在哪个窗口中运行?

2)该窗口是活动窗口吗?

这个想法是,在像 WeeChat 这样的程序中,我会切换到另一个窗口并处理一些事情。当我切换出去时,我想运行“set_unread_current_buffer”——这样当我返回到那个窗口时,WeeChat 会在我最后读过的消息后显示一行。

有一些 WeeChat 插件,但它们会找出 WeeChat 附加到哪个会话,以及该会话当前是否附加,并适当地设置 /away 状态。

我正在寻找类似的东西,但是当我更改窗口时,只需运行“set_unread_current_buffer”而不是/away

答案1

如果你在tmux窗格,那么您可以使用 TMUX_PANE 环境变量*来定位“包含”窗格。

识别“包含”窗口:

tmux display-message -pt "$TMUX_PANE" '#{session_name}:#{window_index}'

或者,根据您的需要,您可能喜欢使用window_id。手册页列出了其他格式变量。例如,在窗格内运行时,此命令

tmux display-message -pt "$TMUX_PANE" '#{window_active}'

1如果窗格的窗口处于活动状态则输出0

pane_active如果您关心特定窗格是否处于活动状态,则可以使用。

如果您想检查其他窗格,您将需要提供您自己的目标窗格标识符(如sess:win.0)。


*tmux1.5 及更高版本TMUX_PANE在启动其初始命令时将窗格设置为唯一值;通过此初始程序运行的其他程序通常会继承此环境变量。

相关内容