我怎样才能找到具有特定 _NET_WM_NAME 的所有 windows?
How can i find all windows with a particular _NET_WM_NAME?
我需要为所有具有特定 window 名称的 windows 设置自定义 属性。
我试图首先列出所有具有特定名称的 windows,但我遇到的问题是 xprop 或 xwininfo 只会列出一个 window 实例的详细信息,尽管有多个 windows同名可用。
xprop -name 'xyz'
xwininfo -name 'xyz'
最终我将使用下面的命令来设置自定义 属性
xprop -name 'xyz' -f Onkar 8s -set Onkar Hello
另一件需要注意的事情是我无法访问 wmctrl 或 xdotool
这是一个编程方法(在 C 中):
首先,使用 Atoms 和 XGetWindowProperty() 使用 _NET_CLIENT_LIST 属性 获取 window ID。
然后使用 Atoms 下的 WM_NAME 获取 window 名称,再次使用 XGetWindowProperty()。现在您拥有系统中所有活动 windows 的列表,因此您可以使用 strcmp() 来检查 window.
的所需名称
这里给出了工作代码:
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
我需要为所有具有特定 window 名称的 windows 设置自定义 属性。
我试图首先列出所有具有特定名称的 windows,但我遇到的问题是 xprop 或 xwininfo 只会列出一个 window 实例的详细信息,尽管有多个 windows同名可用。
xprop -name 'xyz'
xwininfo -name 'xyz'
最终我将使用下面的命令来设置自定义 属性
xprop -name 'xyz' -f Onkar 8s -set Onkar Hello
另一件需要注意的事情是我无法访问 wmctrl 或 xdotool
这是一个编程方法(在 C 中):
首先,使用 Atoms 和 XGetWindowProperty() 使用 _NET_CLIENT_LIST 属性 获取 window ID。 然后使用 Atoms 下的 WM_NAME 获取 window 名称,再次使用 XGetWindowProperty()。现在您拥有系统中所有活动 windows 的列表,因此您可以使用 strcmp() 来检查 window.
的所需名称这里给出了工作代码: 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