Window find_window(Window top,char *name) { char *wname,*iname; XClassHint xch; Window *children,foo; int revert_to_return; unsigned int nc; if (!strcmp(active_window_name,name)){ XGetInputFocus(dpy, &foo, &revert_to_return); return(foo); } /* First the base case */ if (XFetchName(dpy,top,&wname)){ if (!strncmp(wname,name,strlen(name))) { XFree(wname); debugprintf("found it by wname %x \n",top); return(top); /* found it! */ }; XFree(wname); }; if(XGetIconName(dpy,top,&iname)){ if (!strncmp(iname,name,strlen(name))) { XFree(iname); debugprintf("found it by iname %x \n",top); return(top); /* found it! */ }; XFree(iname); }; if(XGetClassHint(dpy,top,&xch)) { if(!strcmp(xch.res_class,name)) { XFree(xch.res_name); XFree(xch.res_class); debugprintf("res_class '%s' res_name '%s' %x \n", xch.res_class,xch.res_name,top); return(top); /* found it! */ }; if(!strcmp(xch.res_name,name)) { XFree(xch.res_name); XFree(xch.res_class); debugprintf("res_class '%s' res_name '%s' %x \n", xch.res_class,xch.res_name,top); return(top); /* found it! */ }; XFree(xch.res_name); XFree(xch.res_class); }; if(!XQueryTree(dpy,top,&foo,&foo,&children,&nc) || children==NULL) { return(0); /* no more windows here */ }; /* check all the sub windows */ for(;nc>0;nc--) { top = find_window(children[nc-1],name); if(top) break; /* we found it somewhere */ }; if(children!=NULL) XFree(children); return(top); }
static void set_iconName (const char *str) { char *name; if (XGetIconName (Xdisplay, TermWin.parent, &name)) name = NULL; if (name == NULL || strcmp (name, str)) XSetIconName (Xdisplay, TermWin.parent, str); if (name) XFree (name); }
void Client::getWMName() { char *name; Client *client; QString oldwname = wmname; QString oldiname = icname; Atom type; int format; unsigned long nitems=0; unsigned long extra=0; unsigned char *data=NULL; XGetWindowProperty(QX11Info::display(), id, WMApp::netatom[NetWMName], 0, 500, false, AnyPropertyType, &type, &format, &nitems, &extra, &data); if(data != NULL) { wmname = QString::fromUtf8((char *)data); XFree(data); } else if(XFetchName(QX11Info::display(), id, &name) && name != NULL) { wmname = name; XFree(name); } data = NULL; XGetWindowProperty(QX11Info::display(), id, WMApp::netatom[NetWMIconName], 0, 500, False, AnyPropertyType, &type, &format, &nitems, &extra, &data); if(data != NULL) { icname = QString::fromUtf8((char *)data); XFree(data); } else if(XGetIconName(QX11Info::display(), id, &name) && name != NULL) { icname = name; XFree(name); } else icname = wmname; }
void Client::getWMName() { char *name; Atom type; int format; unsigned long nitems=0; unsigned long extra=0; unsigned char *data=NULL; if (XFetchName(display(), clientId, &name) && name != NULL) { clientName = QString::fromUtf8((char *)name); XFree(name); } else { XGetWindowProperty(display(), clientId, Atoms::atom(Atoms::NET_WM_NAME), 0, 500, FALSE, AnyPropertyType, &type, &format, &nitems, &extra, &data); if (data != NULL) { clientName = QString::fromUtf8((char *)data); XFree(data); } else // use class hints clientName = appName; } data = NULL; XGetWindowProperty(display(), clientId, Atoms::atom(Atoms::NET_WM_ICON_NAME), 0, 500, FALSE, AnyPropertyType, &type, &format, &nitems, &extra, &data); if (data != NULL) { icnName = QString::fromUtf8((char *)data); XFree(data); } else if (XGetIconName(display(), clientId, &name) && name != NULL) { icnName = name; XFree(name); } else icnName = clientName; if (titlebar != NULL) titlebar->setTitle(clientName); qDebug() << "WINDOW NAME: " << clientName; }