【问题标题】:bash, find order of focused windows (similar to the alt+tab menu)bash,查找焦点窗口的顺序(类似于 alt+tab 菜单)
【发布时间】:2019-05-24 15:16:21
【问题描述】:

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

例如,按 sup+c 将聚焦 chrome;如果没有打开 chrome 窗口,它将创建一个新的 chrome 窗口;如果打开了多个 chrome 窗口,它将聚焦最近聚焦的一个。同样,sup+t 也可以对终端等做同样的事情。

我可以使用xdotool search --name <window-name> 来查找某个名称的窗口ID。我可以使用xdotool windowactivate <id> 关注该窗口。

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

1) 有没有办法按最后关注的方式对此进行排序?

2) 或者也许是一种通过 last-focus 获取所有窗口的方法,然后我可以将该列表与xdotool search 返回的 id 进行比较?

3) 或者也许一种在窗口焦点发生变化时调用回调的方法,以便我可以手动跟踪按最后焦点排序的窗口?

4) 还有其他方法吗?

【问题讨论】:

    标签: linux bash debian window focus


    【解决方案1】:

    无意中发现,xdotool search 似乎已经按照从最早关注的窗口(顶部)到最近关注的窗口(底部)的顺序排列。

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

    编辑:显然情况并非总是如此。虽然这在过去几天对我有用,但我注意到 Chrome 窗口将列在其他窗口上方,无论焦点顺序如何。

    【讨论】:

    • 我认为每次打开一个新程序时,该程序都会获得一个新的 PID(进程 ID),并且每次打开的程序都会增加 PID。也许它是按 PID 排序的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多