我的“.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;
}