1

我的“.xinitrc”中有:

xterm &
mywm

在 mywm 中,我使用XQueryTree来获取 root 的所有 Windows 子项的列表。我没有得到 xterm 的窗口。我需要这样做才能将我的标题栏添加到在 wm 之前打开的窗口中。

我的问题是,mywm 如何检测到这个窗口?

实际上,XQueryTree 可以检测到窗口,但我必须在调用 XQueryTree 之前添加几秒钟的睡眠。这很棘手,有比强迫 mywm 睡一会儿更好的方法吗?

struct Client{
        Window                  frame/*frame*/;
        Client                 *next; // next client
        Client                 *previous; // previous client

};

void addClient(...){
        Client *client;
        client = (Client *)malloc(sizeof(Client));
        memset(c, 0, sizeof(Client));
         .
         .
         .
        client->next = head.next;
        if(head.next != NULL) head.next = client;
        client->previous = &head;
        head.next = client;
}

int main(int argc, char *argv[]){
  .
  .
  .
  while(continue) {
    .
    .
    .
    while(XPending(display)==0){ // as long as I don't get an event
      .
      .
      .
      XQueryTree(display,rootwin,&qr,&qp,&qc,&nc); // we got the list of the windows  
      .                                            // children of root
      . -> call addclient()
      .
    }
    .
    .
    .
    XNextEvent(display, &e);
    switch(e.type){
      .
      .
      .
    }
  }
  .
  .
  .
 return 0;
}
4

0 回答 0