Example #1
0
void get_atom_value_for_loop(gpointer data, gulong n_item, gpointer res,
                             gulong start_index)
{
    for (guint i = start_index; i < n_item; ++i) {
        ((gulong*)res)[i] = X_FETCH_32(data, i);
    }
}
Example #2
0
void get_workarea_size(int* x, int* y, int* width, int* height)
{
    Display *dpy = gdk_x11_get_default_xdisplay();
    Atom property = XInternAtom(dpy, "_NET_WORKAREA", False);
    gulong items;
    gulong* data = get_window_property(dpy, GDK_ROOT_WINDOW(), property,
                                       &items);

    if (data && items == 4) {
        *x = X_FETCH_32(data, 0);
        *y = X_FETCH_32(data, 1);
        *width = X_FETCH_32(data, 2);
        *height = X_FETCH_32(data, 3);
        XFree(data);
    } else {
        x = y = width = height = 0;
    }
}
Example #3
0
Drawable get_blurred_background()
{
    gulong n_item;
    gpointer data = get_window_property(gdk_x11_get_default_xdisplay(),
                                        GDK_ROOT_WINDOW(), _BG_ATOM, &n_item);
    if (data == NULL) {
        return 0;
    }
    Drawable bg = X_FETCH_32(data, 0);
    XFree(data);
    return bg;
}
Example #4
0
int _is_maximized_window(Window win)
{
    gulong items;
    Atom ATOM_WINDOW_NET_STATE = gdk_x11_get_xatom_by_name("_NET_WM_STATE");
    Atom ATOM_WINDOW_MAXIMIZED_VERT = gdk_x11_get_xatom_by_name("_NET_WM_STATE_MAXIMIZED_VERT");
    Display* _dsp = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
    long* data = get_window_property(_dsp, win, ATOM_WINDOW_NET_STATE, &items);

    if (data != NULL) {
        for (guint i=0; i<items; i++) {
            if ((Atom)X_FETCH_32(data, i) == ATOM_WINDOW_MAXIMIZED_VERT) {
                XFree(data);
                return 1;
            }
        }
        XFree(data);
    }
    return 0;
}
Example #5
0
gboolean dock_has_maximize_client()
{
    Atom ATOM_CLIENT_LIST = gdk_x11_get_xatom_by_name("_NET_CLIENT_LIST");
    Display* _dsp = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
    gulong items;
    Window root = GDK_ROOT_WINDOW();
    void* data = get_window_property(_dsp, root, ATOM_CLIENT_LIST, &items);

    gboolean has = FALSE;

    if (data == NULL) return has;

    for (guint i=0; i<items; i++) {
        Window xid = X_FETCH_32(data, i);
        if (_is_maximized_window(xid)) {
            has = TRUE;
            break;
        }
    }

    XFree(data);

    return has;
}
Example #6
0
void get_atom_value_for_index(gpointer data, gulong n_item, gpointer res,
                              gulong index)
{
    *(gulong*)res = X_FETCH_32(data, index);
}