我想找到某种方法让程序找到以下信息:
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
在启动其初始命令时将窗格设置为唯一值;通过此初始程序运行的其他程序通常会继承此环境变量。