Java Linux:如何获取所有可见窗口的列表
免责声明:我知道在这个话题上有一个非常类似的问题 我试图得到与NoozNooz42描述的完全相同的结果。然而,这个答案并不适合我的需要,因为我对在linux上做同样的事情感兴趣。如果有关系的话,最好和侏儒在一起。因此,将JNA与user32库一起使用在这里不是一个选项(或者是吗?) 任何建议都很好,我几乎找不到关于这个话题的任何建议 附言。 我唯一发现的是wmctrl命令(我最终可以在java中调用并解析它),它列出了窗口,但没有给我任何关于z顺序的信息 更新:Java Linux:如何获取所有可见窗口的列表,java,linux,gnome,Java,Linux,Gnome,免责声明:我知道在这个话题上有一个非常类似的问题 我试图得到与NoozNooz42描述的完全相同的结果。然而,这个答案并不适合我的需要,因为我对在linux上做同样的事情感兴趣。如果有关系的话,最好和侏儒在一起。因此,将JNA与user32库一起使用在这里不是一个选项(或者是吗?) 任何建议都很好,我几乎找不到关于这个话题的任何建议 附言。 我唯一发现的是wmctrl命令(我最终可以在java中调用并解析它),它列出了窗口,但没有给我任何关于z顺序的信息 更新: 如果我能在z顺序更改时收到通知/
如果我能在z顺序更改时收到通知/回调,那就太好了。使用xprop,它会显示窗口属性。按z顺序排列的窗口列表位于根窗口的属性
\u NET\u CLIENT\u List\u STACKING
中:
xprop -root | grep '_NET_CLIENT_LIST_STACKING(WINDOW)'
输出应如下所示:
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0x2000003, 0x4000004,
0x1c00004, 0x1c00030, 0x1c00033, 0x2e00004
稍后,您可以通过以下方式获得有关特定窗口的更多信息:
xprop -id <id>
xprop-id
或
xwininfo-id
回答得很好,谢谢+1对于这个问题,我仍然希望使用纯java解决方案。请参阅我对这个问题的更新。您知道有什么东西会在z顺序更改时通知我吗?xev-root
将显示根窗口属性中的所有更改。只需在网络、客户、列表堆叠后进行过滤即可。这太棒了。我现在才开始想象我的可能性是什么。这是所有常见linux发行版中的标准包吗?xprop-root\u NET\u CLIENT\u LIST\u STACKING
不使用grep过滤它。
xwininfo -id <id>