## Resource Usage of X Clients

Resource Usage of X Clients — reading resource usage of X clients.

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    #include <libwnck/libwnck.h>

    struct              WnckResourceUsage;
    void                wnck_xid_read_resource_usage        (GdkDisplay *gdk_display,
                                                             gulong xid,
                                                             WnckResourceUsage *usage);
    void                wnck_pid_read_resource_usage        (GdkDisplay *gdk_display,
                                                             gulong pid,
                                                             WnckResourceUsage *usage);

## Description

libwnck provides an easy-to-use interface to the XRes X server extension to read resource usage of X clients, which can be defined either by the X window ID of one of their windows or by the process ID of their process.

## Details

### struct WnckResourceUsage

    struct WnckResourceUsage {
      gulong        total_bytes_estimate;

      gulong        pixmap_bytes;

      unsigned int n_pixmaps;
      unsigned int n_windows;
      unsigned int n_gcs;
      unsigned int n_pictures;
      unsigned int n_glyphsets;
      unsigned int n_fonts;
      unsigned int n_colormap_entries;
      unsigned int n_passive_grabs;
      unsigned int n_cursors;
      unsigned int n_other;
    };

The WnckResourceUsage struct contains information about the total resource usage of an X client, and the number of resources allocated for each resource type.

gulong `total_bytes_estimate`; | estimation of the total number of bytes allocated in the X server.
gulong `pixmap_bytes`; | number of bytes allocated in the X server for resources of type Pixmap.
unsigned int `n_pixmaps`; | number of Pixmap resources allocated.
unsigned int `n_windows`; | number of Window resources allocated.
unsigned int `n_gcs`; | number of GContext resources allocated.
unsigned int `n_pictures`; | number of Picture resources allocated.
unsigned int `n_glyphsets`; | number of Glyphset resources allocated.
unsigned int `n_fonts`; | number of Font resources allocated.
unsigned int `n_colormap_entries`; | number of Colormap resources allocated.
unsigned int `n_passive_grabs`; | number of PassiveGrab resources allocated.
unsigned int `n_cursors`; | number of Cursor resources allocated.
unsigned int `n_other`; | number of other resources allocated.

Since 2.6

### wnck_xid_read_resource_usage ()

    void                wnck_xid_read_resource_usage        (GdkDisplay *gdk_display,
                                                             gulong xid,
                                                             WnckResourceUsage *usage);

Looks for the X resource usage of the application owning the X window ID `xid` on display `gdisplay`. If no resource usage can be found, then all fields of `usage` are set to 0.

To properly work, this function requires the XRes extension on the X server.

`gdk_display` : | a `GdkDisplay`.
`xid` : | an X window ID.
`usage` : | return location for the X resource usage of the application owning the X window ID `xid`.

Since 2.6

### wnck_pid_read_resource_usage ()

    void                wnck_pid_read_resource_usage        (GdkDisplay *gdk_display,
                                                             gulong pid,
                                                             WnckResourceUsage *usage);

Looks for the X resource usage of the application with process ID `pid` on display `gdisplay`. If no resource usage can be found, then all fields of `usage` are set to 0.

In order to find the resource usage of an application that does not have an X window visible to libwnck (panel applets do not have any toplevel windows, for example), `wnck_pid_read_resource_usage()` walks through the whole tree of X windows. Since this walk is expensive in CPU, a cache is created. This cache is updated in the background. This means there is a non-null probability that no resource usage will be found for an application, even if it is an X client. If this happens, calling `wnck_pid_read_resource_usage()` again after a few seconds should work.

To properly work, this function requires the XRes extension on the X server.

`gdk_display` : | a `GdkDisplay`.
`pid` : | a process ID.
`usage` : | return location for the X resource usage of the application with process ID `pid`.

Since 2.6

## See Also

wnck_window_get_xid(), `wnck_application_get_xid()`, `wnck_window_get_pid()`, `wnck_application_get_pid()`