| GNOME Window Manager Compliance - How to write a GNOME compliant Window Manager | ||
|---|---|---|
| Prev | Chapter 1. Providing Client Information For The Window Manager | Next |
It is important to list which parts of GNOME Window Manager compliance are supported. This is done fairly easily by doing the following:
Create a property on the root window of the atom name _WIN_PROTOCOLS. This property contains a list(array)of atoms that are all the properties the Window Manager supports. These atoms are any number of the following:
If you list one of these properties then you support it and applications can expect information provided by, or accepted by the Window Manager to work.
Example:
Display *disp;
Window root_window;
Atom atom_set;
Atom list[10];
atom_set = XInternAtom(disp, "_WIN_PROTOCOLS", False);
list[0] = XInternAtom(disp, "_WIN_LAYER", False);
list[1] = XInternAtom(disp, "_WIN_STATE", False);
list[2] = XInternAtom(disp, "_WIN_HINTS", False);
list[3] = XInternAtom(disp, "_WIN_APP_STATE", False);
list[4] = XInternAtom(disp, "_WIN_EXPANDED_SIZE", False);
list[5] = XInternAtom(disp, "_WIN_ICONS", False);
list[6] = XInternAtom(disp, "_WIN_WORKSPACE", False);
list[7] = XInternAtom(disp, "_WIN_WORKSPACE_COUNT", False);
list[8] = XInternAtom(disp, "_WIN_WORKSPACE_NAMES", False);
list[9] = XInternAtom(disp, "_WIN_CLIENT_LIST", False);
XChangeProperty(disp, root_window, atom_set, XA_ATOM, 32, PropModeReplace,
(unsigned char *)list, 10); |