xcb\_query\_tree(3) XCB Requests xcb\_query\_tree(3)

# [NAME](#NAME)

xcb\_query\_tree - query the window tree

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;xcb/xproto.h&gt;**

## [Request function](#Request_function)

xcb\_query\_tree\_cookie\_t **xcb\_query\_tree**(xcb\_connection\_t \**conn*, xcb\_window\_t *window*);

## [Reply datastructure](#Reply_datastructure)

```
typedef struct xcb_query_tree_reply_t {


    uint8_t      response_type;


    uint8_t      pad0;


    uint16_t     sequence;


    uint32_t     length;


    xcb_window_t root;


    xcb_window_t parent;


    uint16_t     children_len;


    uint8_t      pad1[14];
} xcb_query_tree_reply_t;
```

## [Reply function](#Reply_function)

xcb\_query\_tree\_reply\_t \***xcb\_query\_tree\_reply**(xcb\_connection\_t \**conn*, xcb\_query\_tree\_cookie\_t *cookie*, xcb\_generic\_error\_t \*\**e*);

## [Reply accessors](#Reply_accessors)

xcb\_window\_t \***xcb\_query\_tree\_children**(const xcb\_query\_tree\_request\_t \**reply*);

int **xcb\_query\_tree\_children\_length**(const xcb\_query\_tree\_reply\_t \**reply*);

xcb\_generic\_iterator\_t **xcb\_query\_tree\_children\_end**(const xcb\_query\_tree\_reply\_t \**reply*);

# [REQUEST ARGUMENTS](#REQUEST_ARGUMENTS)

[*conn*](#conn)

The XCB connection to X11.

[*window*](#window)

The *window* to query.

# [REPLY FIELDS](#REPLY_FIELDS)

[*response\_type*](#response_type)

The type of this reply, in this case *XCB\_QUERY\_TREE*. This field is also present in the *xcb\_generic\_reply\_t* and can be used to tell replies apart from each other.

[*sequence*](#sequence)

The sequence number of the last request processed by the X11 server.

[*length*](#length)

The length of the reply, in words (a word is 4 bytes).

[*root*](#root)

The root window of *window*.

[*parent*](#parent)

The parent window of *window*.

[*children\_len*](#children_len)

The number of child windows.

# [DESCRIPTION](#DESCRIPTION)

Gets the root window ID, parent window ID and list of children windows for the specified *window*. The children are listed in bottom-to-top stacking order.

# [RETURN VALUE](#RETURN_VALUE)

Returns an *xcb\_query\_tree\_cookie\_t*. Errors have to be handled when calling the reply function *xcb\_query\_tree\_reply*.

If you want to handle errors in the event loop instead, use *xcb\_query\_tree\_unchecked*. See [**xcb-requests(3)**](/man/os/libxcb/xcb-requests.3) for details.

# [ERRORS](#ERRORS)

This request does never generate any errors.

# [EXAMPLE](#EXAMPLE)

```
/*


 * Displays the root, parent and children of the specified window.


 *


 */
void my_example(xcb_connection_t *conn, xcb_window_t window) {


    xcb_query_tree_cookie_t cookie;


    xcb_query_tree_reply_t *reply;


    cookie = xcb_query_tree(conn, window);


    if ((reply = xcb_query_tree_reply(conn, cookie, NULL))) {


        printf("root = 0x%08x\n", reply->root);


        printf("parent = 0x%08x\n", reply->parent);


        xcb_window_t *children = xcb_query_tree_children(reply);


        for (int i = 0; i < xcb_query_tree_children_length(reply); i++)


            printf("child window = 0x%08x\n", children[i]);


        free(reply);


    }
}
```

# [SEE ALSO](#SEE_ALSO)

[**xcb-requests**(3)](/man/os/libxcb/xcb-requests.3), [**xcb-examples**(3)](/man/os/libxcb/xcb-examples.3), [**xwininfo**(1)](/man/os/libxcb/xwininfo.1)

# [AUTHOR](#AUTHOR)

Generated from xproto.xml. Contact xcb@lists.freedesktop.org for corrections and improvements.

libxcb 1.17.0 X Version 11

---

Document: xcb_query_tree_unchecked(3) from libxcb 1.17.0-r17 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libxcb.git
