bash,找到聚焦窗口的顺序(类似于alt + tab菜单)

时间:2019-05-24 15:16:22

标签: linux bash debian window focus

高级别,我正在尝试创建一个实用程序,在该实用程序中可以映射某些键以聚焦于具有特定名称的最近聚焦的窗口。

例如,按sup + c键将使chrome聚焦;如果没有打开任何Chrome浏览器窗口,则会创建一个新的Chrome浏览器窗口;如果打开了多个镀铬窗口,它将聚焦于最近聚焦的窗口。同样,sup + t可能对终端等也是如此。

我可以使用xdotool search --name <window-name>查找特定名称的窗口ID。我可以跟随xdotool windowactivate <id>来聚焦该窗口。

但是,xdotool search返回匹配窗口的所有ID;而我想找到最后一个聚焦的匹配窗口。

1)有没有一种方法可以根据最后关注的对象进行排序?

2)还是一种通过最后一次焦点获取所有窗口的方法,然后我可以将该列表与xdotool search返回的ID进行比较?

3)也许有一种方法可以在窗口焦点改变时调用回调,以便我可以手动跟踪由最后焦点排序的窗口?

4)还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

偶然发现,似乎xdotool search已从最旧的窗口(顶部)开始到最近的窗口(底部)开始排序。

如果打开4个终端窗口,并使用xdotool getactivewindow打印它们的ID,则在一种类型xdotool search --name terminal中,它们的ID将按上述顺序打印。

编辑:显然并非总是如此。在过去的几天里,这种方法一直很有效,但我注意到,不管焦点顺序如何,Chrome窗口都将列在其他窗口的上方。