C 如何使用libxdo或其他x库按窗口的wm名称(_NET_wm_name)显示/隐藏窗口?
使用命令行工具,您可以使用C 如何使用libxdo或其他x库按窗口的wm名称(_NET_wm_name)显示/隐藏窗口?,c,window,x11,xlib,xdotool,C,Window,X11,Xlib,Xdotool,使用命令行工具,您可以使用-a开关通过窗口的wm名称将窗口作为目标。例如: xdo hide -a Foo 而在C的xdo库libxdo中,您只能通过窗口ID来确定窗口的目标。如何仅知道wm名称(\u NET\u wm\u name)来获取窗口ID 差不多 Window my_window = xdo_get_window_by_wm_name(xdo, "Foo") 这就是我要找的,有什么能做到这一点的吗 最终,我试图通过它们的\u NET\u WM\u NAME来显示/隐藏窗口,是否有其
-a
开关通过窗口的wm名称将窗口作为目标。例如:
xdo hide -a Foo
而在C的xdo库libxdo中,您只能通过窗口ID来确定窗口的目标。如何仅知道wm名称(\u NET\u wm\u name
)来获取窗口ID
差不多
Window my_window = xdo_get_window_by_wm_name(xdo, "Foo")
这就是我要找的,有什么能做到这一点的吗
最终,我试图通过它们的
\u NET\u WM\u NAME
来显示/隐藏窗口,是否有其他更好的方法在C中实现这一点(使用libxdo或其他方式)?我不知道libxdo
库是如何工作的,但是使用标准的libX11
库,您可以使用XQueryTree
从根目录递归枚举所有窗口,并使用XGetWindowProperty
获取它们的任何属性。libxcb中也存在类似的函数(它是libX11的较新替代品,但总和与旧libX11一样糟糕)。看看xdo
源代码,它就是这么做的,使用libxcb
,重要的区别是-a
在\u NET\u WM\u NAME
上不匹配,但是在旧的非utf8 icccmWM_NAME
属性上。