如何查找带有特定_NET_WM_NAME的所有窗口?

时间:2018-12-26 13:53:30

标签: x11

我需要为所有具有特定窗口名称的窗口设置自定义属性。

我试图首先列出具有特定名称的所有窗口,而我面临的问题是,尽管有多个具有相同名称的窗口,但xprop或xwininfo只会列出该窗口的一个实例的详细信息。

xprop -name 'xyz'
xwininfo -name 'xyz'

最终,我将使用以下命令来设置自定义属性

xprop -name 'xyz' -f Onkar 8s -set Onkar Hello

要注意的另一件事是我无权访问wmctrl或xdotool

1 个答案:

答案 0 :(得分:0)

这是一种编程方法(用C语言编写):

首先,使用Atoms和XGetWindowProperty()使用_NET_CLIENT_LIST属性获取窗口ID。 然后使用Atoms下的WM_NAME获取窗口名称,再次使用XGetWindowProperty()。现在,您有了系统中所有活动窗口的列表,因此可以使用strcmp()检查所需的窗口名称。

工作代码如下: https://cboard.cprogramming.com/linux-programming/125534-accessing-windows-x11.html

关于XGetWindowProperty() https://tronche.com/gui/x/xlib/window-information/XGetWindowProperty.html

关于原子: https://tronche.com/gui/x/xlib/window-information/properties-and-atoms.html