Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}