4 char *xprop_names[] = {
11 "_NET_WM_STATE_SKIP_TASKBAR",
12 "_NET_WM_STATE_SHADED",
13 "_NET_WM_STATE_BELOW",
14 "_NET_WM_STATE_HIDDEN",
16 "_NET_WM_WINDOW_TYPE",
17 /* XXX only show some of these */
18 "_NET_WM_WINDOW_TYPE_DESKTOP",
19 "_NET_WM_WINDOW_TYPE_DOCK",
20 "_NET_WM_WINDOW_TYPE_TOOLBAR",
21 "_NET_WM_WINDOW_TYPE_MENU",
22 "_NET_WM_WINDOW_TYPE_UTILITY",
23 "_NET_WM_WINDOW_TYPE_SPLASH",
24 "_NET_WM_WINDOW_TYPE_DIALOG",
25 "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU",
26 "_NET_WM_WINDOW_TYPE_POPUP_MENU",
27 "_NET_WM_WINDOW_TYPE_TOOLTIP",
28 "_NET_WM_WINDOW_TYPE_NOTIFICATION",
29 "_NET_WM_WINDOW_TYPE_COMBO",
30 "_NET_WM_WINDOW_TYPE_DND",
31 "_NET_WM_WINDOW_TYPE_NORMAL",
33 "_NET_WM_ICON_GEOMETRY",
37 "_NET_CLIENT_LIST_STACKING",
38 "_NET_NUMBER_OF_DESKTOPS",
39 "_NET_CURRENT_DESKTOP",
43 "_NET_RESTACK_WINDOW",
48 void xprop_init(screen *sc)
50 XInternAtoms(sc->dd, xprop_names, XPROP_COUNT, False, sc->atoms);
53 void* xprop_get_data(screen *sc, Window win, xprop_t prop,
54 Atom type, int *items)
58 unsigned long items_ret;
59 unsigned long after_ret;
60 unsigned char *prop_data;
64 XGetWindowProperty(sc->dd, win, sc->atoms[prop], 0, 0x7fffffff,
65 False, type, &type_ret, &format_ret, &items_ret,
66 &after_ret, &prop_data);
73 int xprop_get_num(screen *sc, Window win, xprop_t p)
78 data = xprop_get_data(sc, win, p, XA_CARDINAL, 0);
86 char* xprop_get_utf8(screen *sc, Window win, xprop_t p)
88 return xprop_get_data(sc, win, p, sc->atoms[UTF8_STRING], 0);
91 char* xprop_get_string(screen *sc, Window win, xprop_t p)
93 return xprop_get_data(sc, win, p, XA_STRING, 0);
96 void xprop_set_num(screen *sc, Window win, xprop_t p, long val)
98 XChangeProperty(sc->dd, win, sc->atoms[p], XA_CARDINAL, 32,
99 PropModeReplace, (unsigned char *)&val, 1);
102 void xprop_set_atom(screen *sc, Window win, xprop_t p, xprop_t at)
104 XChangeProperty(sc->dd, win, sc->atoms[p], XA_ATOM, 32,
105 PropModeReplace, (unsigned char *)&sc->atoms[at], 1);
108 void xprop_set_array(screen *sc, Window win, xprop_t p,
109 const long *vals, int num)
111 XChangeProperty(sc->dd, win, sc->atoms[p], XA_CARDINAL, 32, PropModeReplace,
112 (unsigned char *)vals, num);
115 void xprop_set_string(screen *sc, Window win, xprop_t p, const char *s)
117 XChangeProperty(sc->dd, win, sc->atoms[p], XA_STRING, 8, PropModeReplace,
118 (unsigned char *)s, strlen(s));