如何在Linux中获取窗口组件的位置?

时间:2014-11-25 12:55:00

标签: linux x11

在Linux中,可以使用xwininfo来获取窗口的位置。是否可以获得它的组件的位置,例如浏览器的内容区域,窗口的按钮? -children的{​​{1}}选项只能获取子窗口的位置,而不是组件。

1 个答案:

答案 0 :(得分:2)

我的理解是,现代工具包(如GTK +,Qt)不必必须使用X11窗口支持每个组件,但我发现很难找到这个声明的明确来源。如果X11窗口不支持组件或小部件,则xwininfo将无法确定其位置。

例如,GTK +用于解释环境变量GDK_NATIVE_WINDOWS,意味着每个GdkWindow(corresponding to every widget)都应该有一个本机窗口,但这只是为了与某些应用程序不兼容。此功能已被删除(https://mail.gnome.org/archives/commits-list/2011-March/msg03590.html)。 Gtk + / Gdk现在有gtk_ensure_native_window(),但如果程序员没有明确启用,似乎Gdk不会通过X11窗口支持小部件,因此xwininfo将无法获取这些小部件的位置

似乎可能有特定工具包的替代品。例如,GTK +有gtkparasite,它可能会为您提供有关特定组件的信息,但这仅适用于GTK +应用程序。