Terminal 有没有一种方法可以在不询问窗口管理器的情况下确定终端是否聚焦?

Terminal 有没有一种方法可以在不询问窗口管理器的情况下确定终端是否聚焦?,terminal,xterm,terminal-emulator,Terminal,Xterm,Terminal Emulator,当终端失去焦点/变为非活动状态时(即,当我单击打开的Google Chrome窗口时),我想更改一些tmux样式。我知道我可以通过窗口管理器查看哪个应用程序窗口是集中的,但这在窗口管理器中不起作用 终端仿真器本身是否公开这些信息? 我尝试运行showkey-a,查看当焦点丢失时是否发送了任何转义序列,但看起来不是这样。我认为一些终端实现了这一点,但不是全部,基于vim tmux焦点事件插件的问题跟踪程序: 关于“在我的窗口管理器中,在不同窗口之间更改焦点时,我希望事件会触发”的问题:是的,我知道

当终端失去焦点/变为非活动状态时(即,当我单击打开的Google Chrome窗口时),我想更改一些tmux样式。我知道我可以通过窗口管理器查看哪个应用程序窗口是集中的,但这在窗口管理器中不起作用

终端仿真器本身是否公开这些信息?

我尝试运行
showkey-a
,查看当焦点丢失时是否发送了任何转义序列,但看起来不是这样。

我认为一些终端实现了这一点,但不是全部,基于vim tmux焦点事件插件的问题跟踪程序:

关于“在我的窗口管理器中,在不同窗口之间更改焦点时,我希望事件会触发”的问题:是的,我知道这将非常有用。我认为这可能取决于您使用的终端应用程序。我刚刚在OSX上进行了测试,下面是一些快速的结果:

  • 当tmux在窗口内运行时,它对iTerm起作用
  • 不适用于内部运行普通bash+vim的iTerm(无tmux)
  • 不适用于Terminal.app(带或不带tmux)
[……]

所以,如果我没说错的话,就由终端应用程序来实现“获得焦点”、“失去焦点”功能

我有一个模糊的记忆(虽然我不记得很清楚),当我使用那个插件和gnome终端时,焦点的增益/损耗可能对我有用,所以可能值得一试