Properties X11:窗口属性不适用于gtk窗口

Properties X11:窗口属性不适用于gtk窗口,properties,gtk,x11,Properties,Gtk,X11,在一个程序中,我需要找出当前焦点窗口的WM_CLASS属性。只要聚焦窗口不是gtk应用程序,使用XGetInputFocus()和XGetClassHint()就可以正常工作 我编写了以下示例程序wmclass.c: #包括 #包括 #包括 int main(int argc,字符**argv) { 窗口赢; 显示*d; XClassHint*clh; 国际修订版; 智力状态; clh=XAllocClassHint(); d=xOpen显示(0); 对于(;;){ XGetInputFocus

在一个程序中,我需要找出当前焦点窗口的
WM_CLASS
属性。只要聚焦窗口不是gtk应用程序,使用
XGetInputFocus()
XGetClassHint()
就可以正常工作

我编写了以下示例程序
wmclass.c

#包括
#包括
#包括
int main(int argc,字符**argv)
{
窗口赢;
显示*d;
XClassHint*clh;
国际修订版;
智力状态;
clh=XAllocClassHint();
d=xOpen显示(0);
对于(;;){
XGetInputFocus(d、win和rev);
状态=XGetClassHint(d、win、clh);
如果(状态)
printf(“名称:%s,类:%s\n”,clh->res\u名称,clh->res\u类);
其他的
printf(“失败的\n”);
睡眠(1);
}
XFree(clh);
}
此程序打印:

名称:xterm,类别:xterm
名称:xterm,类别:xterm
失败
失败
失败
名称:xterm,类别:xterm
名称:xterm,类别:xterm
名称:okular,类别:okular
名称:okular,类别:okular
失败
失败
名称:xterm,类别:xterm
名称:xterm,类别:xterm
名称:xterm,类:xterm

失败
如果gtk应用程序处于焦点状态,则会出现。我测试了emacs、gimp、chromium和ardour


为什么呢?如何获得gtk窗口的
WM_类

焦点不一定设置为顶级窗口。特别是,Gtk倾向于将其设置为此类窗口的子窗口


您需要向上移动窗口树。

焦点不一定设置为顶级窗口。特别是,Gtk倾向于将其设置为此类窗口的子窗口

你需要走到窗前的树上去