1

私は ".xinitrc" に持っています:

xterm &
mywm

mywm では、 XQueryTreeを使用して、ルートのすべてのウィンドウの子のリストを取得します。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